Sebuah Walsh matriks adalah jenis khusus dari matriks persegi dengan aplikasi di kuantum komputasi (dan mungkin di tempat lain, tapi aku hanya peduli tentang komputasi kuantum).
Properti dari matriks Walsh
Dimensi adalah kekuatan yang sama dari 2. Oleh karena itu, kita dapat merujuk matriks ini oleh dua ini eksponen sini, menyebut mereka W(0)
, W(1)
, W(2)
...
W(0)
didefinisikan sebagai [[1]]
.
Sebab n>0
, W(n)
terlihat seperti:
[[W(n-1) W(n-1)]
[W(n-1) -W(n-1)]]
Begitu W(1)
juga:
[[1 1]
[1 -1]]
Dan W(2)
adalah:
[[1 1 1 1]
[1 -1 1 -1]
[1 1 -1 -1]
[1 -1 -1 1]]
Polanya berlanjut ...
Tugas Anda
Tulis program atau fungsi yang mengambil input integer n
dan mencetak / mengembalikan W(n)
dalam format apa pun yang nyaman. Ini bisa berupa array array, array boolean yang rata, .svg
gambar, apa saja, asalkan itu benar.
Celah standar dilarang.
Beberapa hal:
Sebab W(0)
, 1
tidak perlu dibungkus sekali pun. Ini bisa menjadi bilangan bulat belaka.
Anda diizinkan untuk hasil 1-indeks W(1)
kemudian akan [[1]]
.
Uji kasus
0 -> [[1]]
1 -> [[1 1]
[1 -1]]
2 -> [[1 1 1 1]
[1 -1 1 -1]
[1 1 -1 -1]
[1 -1 -1 1]]
3 -> [[1 1 1 1 1 1 1 1]
[1 -1 1 -1 1 -1 1 -1]
[1 1 -1 -1 1 1 -1 -1]
[1 -1 -1 1 1 -1 -1 1]
[1 1 1 1 -1 -1 -1 -1]
[1 -1 1 -1 -1 1 -1 1]
[1 1 -1 -1 -1 -1 1 1]
[1 -1 -1 1 -1 1 1 -1]]
8 ->
Pastebin
Ini adalah kode-golf , jadi solusi terpendek dalam setiap bahasa menang! Selamat bermain golf!
W(1)
kembali [[1]]
, W(2)
kembali [[1,1],[1,-1]
...)