Sebagai bagian dari algoritma kompresinya, standar JPEG membuka gulungan sebuah matriks ke dalam vektor di sepanjang antidiagonals dari arah yang bergantian:
Tugas Anda adalah mengambil vektor yang tidak terbuka bersama dengan dimensi matriks dan merekonstruksi matriks yang sesuai. Sebagai contoh:
[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3], 4, 3
harus menghasilkan
[1 2 3 4
5 6 7 8
9 1 2 3]
sedangkan dimensi 6, 2
akan memberi
[1 2 6 3 1 2
5 9 4 7 8 3]
Aturan
Anda dapat memilih untuk hanya mengambil satu dimensi sebagai input. Input individual dapat diambil dalam urutan apa pun. Anda dapat mengasumsikan bahwa lebar dan tinggi positif dan valid untuk panjang vektor yang diberikan.
Anda dapat mengasumsikan bahwa elemen vektor adalah bilangan bulat positif kurang dari 10
.
Anda dapat menulis sebuah program atau fungsi, mengambil input melalui STDIN (atau alternatif terdekat), argumen baris perintah atau argumen fungsi dan mengeluarkan hasilnya melalui STDOUT (atau alternatif terdekat), nilai pengembalian fungsi atau parameter function (out).
Vektor input dapat diberikan dalam format string atau daftar datar yang nyaman, tidak ambigu, datar.
Matriks keluaran mungkin dalam format string atau string yang nyaman, tidak ambigu, bersarang, atau sebagai daftar datar bersama dengan kedua dimensi matriks. (Atau, tentu saja, sebagai jenis matriks jika bahasa Anda memilikinya.)
Aturan standar kode-golf berlaku.
Uji Kasus
Setiap test case berbentuk formulir vector width height => matrix
.
[1] 1 1 => [[1]]
[1 2 3 1] 2 2 => [[1 2] [3 1]]
[1 2 3 1] 4 1 => [[1 2 3 1]]
[1 2 5 9 6 3 4 7 1 2 8 3] 3 4 => [[1 2 3] [5 6 4] [9 7 8] [1 2 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 4 3 => [[1 2 3 4] [5 6 7 8] [9 1 2 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 6 2 => [[1 2 6 3 1 2] [5 9 4 7 8 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 12 1 => [[1 2 5 9 6 3 4 7 1 2 8 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 1 12 => [[1] [2] [5] [9] [6] [3] [4] [7] [1] [2] [8] [3]]
Tantangan Terkait
- Zigzagify a Matrix (transformasi terbalik yang agak sederhana)
- Putar anti-diagonal