Eine Walsh-Matrix ist eine spezielle Art von Quadratmatrix mit Anwendungen im Quanten-Computing (und wahrscheinlich auch anderswo, aber ich kümmere mich nur um das Quanten-Computing).
Eigenschaften von Walsh-Matrizen
Die Abmessungen sind die gleiche Potenz von 2 Deshalb haben wir auf diese Matrizen durch Zweier-Exponenten hier beziehen können, rufen sie W(0)
, W(1)
, W(2)
...
W(0)
ist definiert als [[1]]
.
Für n>0
, W(n)
wie folgt aussieht:
[[W(n-1) W(n-1)]
[W(n-1) -W(n-1)]]
So W(1)
ist es auch:
[[1 1]
[1 -1]]
Und W(2)
ist:
[[1 1 1 1]
[1 -1 1 -1]
[1 1 -1 -1]
[1 -1 -1 1]]
Das Muster geht weiter ...
Deine Aufgabe
Schreiben Sie ein Programm oder eine Funktion, die als Eingabe eine Ganzzahl verwendet n
und W(n)
in einem beliebigen Format ausgibt bzw. zurückgibt . Dies kann ein Array von Arrays sein, ein abgeflachtes Array von Booleschen Werten, ein .svg
Bild, wie Sie es nennen, solange es korrekt ist.
Standardlücken sind verboten.
Ein paar Dinge:
Denn W(0)
das 1
muss nicht einmal gewickelt werden. Es kann eine ganze Zahl sein.
Es ist Ihnen gestattet, die Ergebnisse mit einem Index W(1)
zu versehen [[1]]
.
Testfälle
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
Das ist Code-Golf , also gewinnt die kürzeste Lösung in jeder Sprache! Viel Spaß beim Golfen!
W(1)
kehrt zurück [[1]]
, W(2)
kehrt zurück [[1,1],[1,-1]
...)