Terkadang, saya memiliki daftar matriks konstan dalam kode saya:
[ [[1, 0],
[0, 1]],
[[1, 0],
[0,-1]],
[[0, 1],
[1, 0]],
[[0,-1],
[1, 0]] ]
Itu penggunaan real estat layar yang mengerikan. Saya lebih suka menulisnya bersebelahan:
[ [[1, 0], [[1, 0], [[0, 1], [[0,-1],
[0, 1]], [0,-1]], [1, 0]], [1, 0]] ]
Anda akan menemukan bahwa ini masih merupakan daftar bersarang yang valid secara sintaksis, hanya saja tidak berbentuk persegi panjang dan memiliki struktur yang sangat berbeda (khususnya, semakin dalam setiap kali saya menambahkan matriks yang lebih besar dari 1x1). Namun, masih memungkinkan untuk merekonstruksi daftar matriks awal dari daftar baru ini.
Agar saya dapat menggunakan sintaks ini di masa depan, saya ingin Anda menulis beberapa kode yang mengubah array yang ditulis dalam pengaturan horizontal ke daftar matriks yang mereka wakili.
Untuk memastikan bahwa jawaban tidak melakukan pencocokan pola 2D pada tata letak dalam kode sumber, input akan diberikan baik hanya sebagai objek array, atau jika Anda mengambil representasi string, maka tidak akan berisi spasi kosong yang menunjukkan bagaimana literal ditulis dalam kode. Jadi, Anda akan mendapatkan beberapa input seperti ini:
[[[1, 0], [[1, 0], [[0, 1], [[0,-1], [0, 1]], [0,-1]], [1, 0]], [1, 0]]]
Dan output harus berupa array berikut atau representasi string-nya (sekali lagi, tidak perlu layout lebih lanjut):
[[[1, 0], [0, 1]], [[1, 0], [0,-1]], [[0, 1], [1, 0]], [[0,-1], [1, 0]]]
Ini adalah bagian pertama dan lebih mudah dari tantangan dua bagian. Dalam hal ini, Anda dapat mengasumsikan bahwa semua matriks adalah kuadrat dan memiliki dimensi yang sama dan bahwa mereka disejajarkan dengan benar satu sama lain. Pada bagian kedua kita akan mengendurkan asumsi ini.
Aturan
Input akan berupa daftar bersarang atau representasi string kanoniknya (dalam bahasa pilihan Anda), dan Anda harus menampilkan hasilnya dalam format yang sama. Hasilnya akan selalu mengandung setidaknya satu matriks, dan matriks bisa sekecil 1x1. Matriks hanya akan berisi bilangan bulat (ditandatangani) dengan nilai absolut kurang dari 128.
Anda dapat menulis sebuah program atau fungsi dan menggunakan salah satu metode standar untuk menerima input dan memberikan output.
Anda dapat menggunakan bahasa pemrograman apa pun , tetapi perhatikan bahwa celah ini dilarang secara default.
Ini adalah kode-golf , sehingga jawaban terpendek yang valid - diukur dalam byte - menang.
Uji Kasus
Setiap test case memiliki a) daftar matriks disusun dengan baik di samping satu sama lain karena mereka akan berada dalam kode (ini bukan input Anda), b) daftar yang tidak diformat tanpa spasi kosong ( ini adalah input Anda), c) output yang diharapkan.
Pretty: [ [[0]] ]
Input: [[[0]]]
Output: [[[0]]]
Pretty: [ [[-1]], [[0]], [[1]] ]
Input: [[[-1]],[[0]],[[1]]]
Output: [[[-1]],[[0]],[[1]]]
Pretty: [ [[1, 0], [[1, 0], [[0, 1], [[0,-1],
[0, 1]], [0,-1]], [1, 0]], [1, 0]] ]
Input: [[[1,0],[[1,0],[[0,1],[[0,-1],[0,1]],[0,-1]],[1,0]],[1,0]]]
Output: [[[1,0],[0,1]],[[1,0],[0,-1]],[[0,1],[1,0]],[[0,-1],[1,0]]]
Pretty: [ [[1, 0, 0], [[ 127, 63, 31], [[1, 0, 0], [[0, 0, 0],
[0, 1, 0], [ 15, 0, -15], [0, 0, 1], [0, 0, 0],
[0, 0, 1]], [ -31, -63, -127]], [0, 1, 0]], [0, 0, 0]] ]
Input: [[[1,0,0],[[127,63,31],[[1,0,0],[[0,0,0],[0,1,0],[15,0,-15],[0,0,1],[0,0,0],[0,0,1]],[-31,-63,-127]],[0,1,0]],[0,0,0]]]
Output: [[[1,0,0],[0,1,0],[0,0,1]],[[127,63,31],[15,0,-15],[-31,-63,-127]],[[1,0,0],[0,0,1],[0,1,0]],[[0,0,0],[0,0,0],[0,0,0]]]
[([1, 0], [0, 1]), ([1, 0], [0, -1]), ([0, 1], [1, 0]), ([0, -1], [1, 0])]
output yang valid untuk testcase ketiga? Ini adalah daftar campuran dan tuple.
[([1,0], ([1, 0}, ...
dan yang akan memberi Anda informasi tambahan.