CJam ( 39 37 octets)
A,1>e!{5ew{2Mtz}2*::+)-!},3f/Ma*Sf*N*
Démo en ligne (avertissement: l'exécution peut prendre plus d'une minute, ce qui déclenche les invites "Abandonner ce script?" À partir du navigateur).
Fonctionne en filtrant toutes les grilles possibles à l'aide 5ew
de la carte
[a b c d e f g h i]
à
[[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]]
puis jeter l'élément du milieu et l'élément du milieu de chaque autre élément pour obtenir
[[a b d e]
[b c e f]
[d e g h]
[e f h i]]
qui sont les quatre carrés.
Peter Taylor
la source
la source
Réponses:
Python 3.5, 135 octets
Vérifie directement la somme de chaque carré, moins le milieu. Très probablement encore jouable par la
itertools
règle empirique «inutile».la source
Python2
327271270263260 octets------------
Ce n'est pas si court mais il n'utilise pas de bibliothèques. Cela permute au hasard un carré, le vérifie pour la magie, l'imprime et l'enregistre pour éviter les doublons. Après avoir imprimé 376 carrés magiques uniques, il s'arrête.
J'ai emprunté le générateur de nombres pseudo-aléatoires à l'entrée de Keith Randall pour le golf nommé " Construire un générateur de nombres aléatoires qui réussit les tests Diehard "
De-golfé
la source
Rubis 133
Approche directe de la force brute. Testez-le ici .
la source
J, 83 octets
Il s'agit d'une fonction qui génère une chaîne contenant les 376 carrés robustes. Utilise la force brute, génère toutes les permutations de 1 à 9, forme chacune en un tableau 3x3 et le filtre en vérifiant si les sommes de chaque sous-réseau 2x2 sont égales. Termine en une demi-seconde.
Usage
la source