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 ne imprima / retorne W(n)em qualquer formato conveniente. Pode ser uma matriz de matrizes, uma matriz plana de booleanos, uma .svgimagem, o nome dela, desde que esteja correta.
As brechas padrão são proibidas.
Algumas coisas:
Pois W(0), 1nã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]...)