Una matrice Walsh è un tipo speciale di matrice quadrata con applicazioni nel calcolo quantistico (e probabilmente altrove, ma mi interessa solo il calcolo quantistico).
Proprietà delle matrici di Walsh
Le dimensioni sono le stesse potenza di 2. Pertanto, si può fare riferimento a queste matrici per l'esponente due di qui, chiamandoli W(0)
, W(1)
, W(2)
...
W(0)
è definito come [[1]]
.
Per n>0
, W(n)
sembra:
[[W(n-1) W(n-1)]
[W(n-1) -W(n-1)]]
Quindi W(1)
è:
[[1 1]
[1 -1]]
Ed W(2)
è:
[[1 1 1 1]
[1 -1 1 -1]
[1 1 -1 -1]
[1 -1 -1 1]]
Lo schema continua ...
Il tuo compito
Scrivi un programma o una funzione che accetta come input un numero intero n
e stampa / ritorna W(n)
in qualsiasi formato conveniente. Questo può essere un array di array, un array appiattito di booleani, .svg
un'immagine, lo chiami tu, purché sia corretta.
Sono vietate le scappatoie standard .
Un paio di cose:
Per W(0)
, la 1
non necessità di essere avvolto anche una sola volta. Può essere un semplice numero intero.
Ti è permesso di 1 indice risultati - W(1)
sarebbe quindi [[1]]
.
Casi test
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
Questo è code-golf , quindi vince la soluzione più breve in ogni lingua! Buon golf!
W(1)
ritorni [[1]]
, W(2)
ritorni [[1,1],[1,-1]
...)