Die Herausforderung
Gib ein Array oder eine String-Darstellung von Dürers berühmtem magischen Quadrat aus :
das ist,
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Einige Eigenschaften dieses Quadrats, die möglicherweise ausgenutzt werden können, sind:
- Es enthält jede Ganzzahl von
1
bis16
genau einmal - Die Summe jeder Spalte oder Zeile sowie die Summe jeder der beiden Diagonalen ist gleich. Dies ist die definierende Eigenschaft eines magischen Quadrats . Die Summe ist die magische Konstante des Quadrats.
- Darüber hinaus entspricht für dieses spezielle Quadrat die Summe der vier Quadranten ebenso wie die Summe der mittleren vier Quadrate und der Summe der vier Eckquadrate der magischen Konstante.
Regeln
Bultine, die magische Quadrate erzeugen, sind nicht erlaubt (wie Matlab's magic
oder Mathematica's MagicSquare
). Jedes andere eingebaute kann verwendet werden.
Der Code kann ein Programm oder eine Funktion sein.
Es erfolgt keine Eingabe.
Die Zahlen müssen zur Basis 10 gehören. Das Ausgabeformat ist wie gewohnt flexibel. Einige Möglichkeiten sind:
Ein verschachteltes Array (entweder Funktionsausgabe oder Zeichenfolgendarstellung mit oder ohne Trennzeichen, jede Art von übereinstimmenden Klammern):
[[16, 3, 2, 13], [5, 10, 11, 8], [9, 6, 7, 12], [4, 15, 14, 1]]
Ein 2D-Array:
{16, 3, 2, 13; 5, 10, 11, 8; 9, 6, 7, 12; 4, 15, 14, 1}
Ein Array von vier Zeichenfolgen oder eine Zeichenfolge, die aus vier Zeilen besteht. Die Zahlen können rechtsbündig sein
16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
oder linksbündig
16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
Eine Zeichenfolge mit zwei unterschiedlichen Trennzeichen für Zeile und Spalte, z
16,3,2,13|5,10,11,8|9,6,7,12|4,15,14,1
Das Ausgabeformat sollte Zeilen und Spalten klar unterscheiden. Beispielsweise ist es nicht zulässig, ein flaches Array oder eine Zeichenfolge mit durch Leerzeichen getrennten Zahlen auszugeben.
Code Golf. Kürzeste Siege.
[15]
und es dann mit jedem durch 13, 3, 8 bzw. 15 XOR-verknüpften Element mit der Rückseite verketten.