Una matriz de Walsh es un tipo especial de matriz cuadrada con aplicaciones en computación cuántica (y probablemente en otros lugares, pero solo me importa la computación cuántica).
Propiedades de las matrices de Walsh
Las dimensiones son de la misma potencia de 2. Por lo tanto, podemos referirnos a estas matrices por exponente de dos aquí, llamándolos W(0)
, W(1)
, W(2)
...
W(0)
se define como [[1]]
.
Para n>0
, se W(n)
ve así:
[[W(n-1) W(n-1)]
[W(n-1) -W(n-1)]]
Entonces W(1)
es:
[[1 1]
[1 -1]]
Y W(2)
es:
[[1 1 1 1]
[1 -1 1 -1]
[1 1 -1 -1]
[1 -1 -1 1]]
El patrón continúa ...
Tu tarea
Escriba un programa o función que tome como entrada un número entero n
e imprima / devuelva W(n)
en cualquier formato conveniente. Puede ser una matriz de matrices, una matriz aplanada de booleanos, una .svg
imagen, lo que sea, siempre que sea correcto.
Las lagunas estándar están prohibidas.
Un par de cosas:
Para W(0)
, la 1
necesidad no se envuelve ni una sola vez Puede ser un mero entero.
Se le permite obtener 1 índice de resultados W(1)
, entonces sería [[1]]
.
Casos de prueba
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
Este es el código de golf , por lo que gana la solución más corta en cada idioma. ¡Feliz golf!
W(1)
devoluciones [[1]]
, W(2)
devoluciones [[1,1],[1,-1]
...)