CJam ( 39 37 Bytes)
A,1>e!{5ew{2Mtz}2*::+)-!},3f/Ma*Sf*N*
Online-Demo (Warnung: Die Ausführung kann mehr als eine Minute dauern und die Meldung "Dieses Skript abbrechen?" Wird vom Browser angezeigt).
Arbeitet durch Filtern aller möglichen Raster mit 5ew
zuzuordnen
[a b c d e f g h i]
zu
[[a b c d e]
[b c d e f]
[c d e f g]
[d e f g h]
[e f g h i]]
und dann das mittlere Element und das mittlere Element von jedem anderen Element verwerfen, um zu erhalten
[[a b d e]
[b c e f]
[d e g h]
[e f h i]]
Welches sind die vier Quadrate.
Peter Taylor
quelle
quelle
Antworten:
Python 3.5, 135 Bytes
Überprüft direkt die Summe jedes Quadrats abzüglich der Mitte. Höchstwahrscheinlich noch nach der Faustregel "
itertools
ist unnötig" golfbar .quelle
Python2
327271270263260 Bytes------------
Dies ist ... nicht so kurz, aber es werden keine Bibliotheken verwendet. Dies lässt ein Quadrat zufällig durch, überprüft es auf Magie, druckt es aus und zeichnet es auf, um Duplikate zu vermeiden. Nachdem es 376 einzigartige magische Quadrate gedruckt hat, stoppt es.
Ich habe mir den Pseudo-Zufallszahlengenerator von Keith Randalls Eintrag für das Golfspiel " Bauen Sie einen Zufallszahlengenerator, der die Diehard-Tests besteht " ausgeliehen.
Entgolft
quelle
Rubin 133
Unkomplizierter Brute-Force-Ansatz. Teste es hier .
quelle
J 83 Bytes
Dies ist eine Funktion, die eine Zeichenfolge ausgibt, die die 376 stabilen Quadrate enthält. Verwendet Brute-Force, generiert alle Permutationen von 1 bis 9, formt jedes zu einem 3x3-Array und filtert es, indem überprüft wird, ob die Summen jedes 2x2-Subarrays gleich sind. Fertig in einer halben Sekunde.
Verwendung
quelle