Uma matriz de Walsh é um tipo especial de matriz quadrada com aplicações na computação quântica (e provavelmente em outros lugares, mas eu me preocupo apenas com a computação quântica).
Propriedades das matrizes de Walsh
As dimensões são a mesma potência de 2. Portanto, podemos nos referir a essas matrizes por expoente dois está aqui, chamando-os W(0)
, W(1)
,W(2)
...
W(0)
é definido como [[1]]
.
Pois n>0
, W(n)
parece com:
[[W(n-1) W(n-1)]
[W(n-1) -W(n-1)]]
Então W(1)
é:
[[1 1]
[1 -1]]
E W(2)
é:
[[1 1 1 1]
[1 -1 1 -1]
[1 1 -1 -1]
[1 -1 -1 1]]
O padrão continua ...
Sua tarefa
Escreva um programa ou função que tome como entrada um número inteiro n
e imprima / retorne W(n)
em qualquer formato conveniente. Pode ser uma matriz de matrizes, uma matriz plana de booleanos, uma .svg
imagem, o nome dela, desde que esteja correta.
As brechas padrão são proibidas.
Algumas coisas:
Pois W(0)
, 1
não é necessário embrulhar nem uma vez. Pode ser um mero inteiro.
Você tem permissão para resultados de 1 índice - W(1)
seria[[1]]
.
Casos de teste
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
Isso é código-golfe , então a solução mais curta em cada idioma vence! Feliz golfe!
W(1)
devoluções [[1]]
, W(2)
devoluções [[1,1],[1,-1]
...)