Une matrice de Walsh est un type spécial de matrice carrée avec des applications en informatique quantique (et probablement ailleurs, mais je ne me soucie que de l'informatique quantique).
Propriétés des matrices de Walsh
Les dimensions sont la même puissance de 2. Par conséquent, on peut se référer à ces matrices par l'exposant de deux ici, les appeler W(0)
, W(1)
, W(2)
...
W(0)
est défini comme [[1]]
.
Car n>0
, W(n)
ressemble à:
[[W(n-1) W(n-1)]
[W(n-1) -W(n-1)]]
Il en W(1)
est de même:
[[1 1]
[1 -1]]
Et W(2)
c'est:
[[1 1 1 1]
[1 -1 1 -1]
[1 1 -1 -1]
[1 -1 -1 1]]
Le schéma continue ...
Ta tâche
Écrivez un programme ou une fonction qui prend en entrée un entier n
et imprime / retourne W(n)
dans n'importe quel format pratique. Cela peut être un tableau de tableaux, un tableau aplati de booléens, une .svg
image, vous l' appelez, tant qu'elle est correcte.
Les failles standard sont interdites.
Quelques choses:
Car W(0)
, il 1
n'est pas nécessaire d'envelopper une seule fois. Il peut s'agir d'un simple entier.
Vous êtes autorisé à 1 indexer les résultats - W(1)
serait alors [[1]]
.
Cas de 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
C'est le code-golf , donc la solution la plus courte dans chaque langue gagne! Bon golf!
W(1)
retours [[1]]
, W(2)
retours [[1,1],[1,-1]
...)