Un carré solide (semblable à un carré magique ) est un arrangement des entiers 1 à N 2 sur une grille N par N de telle sorte que chaque sous-grille 2 par 2 a la même somme.
Par exemple, pour N = 3, un carré solide est
1 5 3
9 8 7
4 2 6
parce que les quatre sous-grilles 2 par 2
1 5
9 8
5 3
8 7
9 8
4 2
8 7
2 6
somme totale au même montant, 23:
23 = 1 + 5 + 9 + 8 = 5 + 3 + 8 + 7 = 9 + 8 + 4 + 2 = 8 + 7 + 2 + 6
Il existe maintenant des carrés robustes pour des valeurs plus élevées de N et même des versions rectangulaires, mais votre seule tâche dans ce défi est de produire tous les carrés robustes 3 x 3 possibles. Il y a exactement 376 carrés robustes distincts de 3 sur 3, y compris ceux qui sont des réflexions ou des rotations des autres, et tous n'ont pas la même somme de 23.
Écrivez un programme ou une fonction qui ne prend aucune entrée mais imprime ou retourne une chaîne de tous les 376 carrés robustes dans n'importe quel ordre, séparés par des lignes vides, avec jusqu'à deux retours à la ligne facultatifs. Chaque carré doit être composé de trois lignes de trois chiffres décimaux non nuls séparés par des espaces.
Voici un exemple de sortie valide:
1 5 3
9 8 7
4 2 6
1 5 6
8 7 3
4 2 9
1 5 6
8 9 3
2 4 7
1 5 7
9 6 3
2 4 8
1 6 2
8 9 7
4 3 5
1 6 2
9 7 8
4 3 5
1 6 3
9 8 7
2 5 4
1 6 7
8 5 2
3 4 9
1 6 7
9 4 3
2 5 8
1 7 2
9 4 8
5 3 6
1 7 2
9 6 8
3 5 4
1 7 4
8 3 5
6 2 9
1 7 4
9 2 6
5 3 8
1 7 6
9 2 4
3 5 8
1 8 2
5 9 4
6 3 7
1 8 3
6 5 4
7 2 9
1 8 3
9 2 7
4 5 6
1 8 4
5 7 2
6 3 9
1 8 4
6 9 3
2 7 5
1 8 4
9 3 6
2 7 5
1 8 6
7 3 2
4 5 9
1 9 2
5 6 4
7 3 8
1 9 2
6 4 5
7 3 8
1 9 2
6 8 5
3 7 4
1 9 2
8 3 7
4 6 5
1 9 3
7 2 5
6 4 8
1 9 3
7 6 5
2 8 4
1 9 4
5 8 2
3 7 6
1 9 4
6 7 3
2 8 5
1 9 4
8 2 5
3 7 6
1 9 5
7 2 3
4 6 8
1 9 5
7 4 3
2 8 6
2 3 5
9 8 6
4 1 7
2 3 6
9 7 5
4 1 8
2 4 3
8 9 7
5 1 6
2 4 3
9 7 8
5 1 6
2 4 6
7 8 3
5 1 9
2 4 7
8 9 3
1 5 6
2 4 8
9 6 3
1 5 7
2 5 3
9 4 8
6 1 7
2 5 4
9 3 7
6 1 8
2 5 4
9 8 7
1 6 3
2 5 7
6 8 1
4 3 9
2 5 7
6 9 1
3 4 8
2 5 8
7 6 1
3 4 9
2 5 8
9 4 3
1 6 7
2 6 1
7 9 8
5 3 4
2 6 1
8 7 9
5 3 4
2 6 3
5 9 4
7 1 8
2 6 4
5 8 3
7 1 9
2 6 7
9 1 4
3 5 8
2 6 8
7 4 1
3 5 9
2 7 1
8 4 9
6 3 5
2 7 1
8 6 9
4 5 3
2 7 3
5 6 4
8 1 9
2 7 3
6 4 5
8 1 9
2 7 3
9 1 8
5 4 6
2 7 5
4 8 1
6 3 9
2 7 5
6 9 3
1 8 4
2 7 5
9 3 6
1 8 4
2 8 1
4 9 5
7 3 6
2 8 4
7 6 5
1 9 3
2 8 5
4 9 1
3 7 6
2 8 5
6 7 3
1 9 4
2 8 6
7 4 3
1 9 5
2 9 1
4 6 5
8 3 7
2 9 1
5 4 6
8 3 7
2 9 1
5 8 6
4 7 3
2 9 1
7 3 8
5 6 4
2 9 3
6 1 5
7 4 8
2 9 4
3 7 1
6 5 8
2 9 4
3 8 1
5 6 7
2 9 5
4 7 1
3 8 6
2 9 5
7 1 4
3 8 6
2 9 6
5 3 1
4 7 8
2 9 6
5 4 1
3 8 7
3 2 5
9 8 7
4 1 6
3 2 6
8 9 5
4 1 7
3 2 7
9 6 5
4 1 8
3 4 2
7 9 8
6 1 5
3 4 2
8 7 9
6 1 5
3 4 5
9 2 7
6 1 8
3 4 8
6 9 1
2 5 7
3 4 9
7 6 1
2 5 8
3 4 9
8 5 2
1 6 7
3 5 1
7 8 9
6 2 4
3 5 2
8 4 9
7 1 6
3 5 4
9 1 8
6 2 7
3 5 4
9 6 8
1 7 2
3 5 8
9 1 4
2 6 7
3 5 8
9 2 4
1 7 6
3 5 9
7 4 1
2 6 8
3 6 1
7 8 9
4 5 2
3 6 2
4 9 5
8 1 7
3 6 8
7 1 2
4 5 9
3 7 2
4 6 5
9 1 8
3 7 2
5 4 6
9 1 8
3 7 2
8 1 9
6 4 5
3 7 4
6 1 5
8 2 9
3 7 4
6 8 5
1 9 2
3 7 6
4 9 1
2 8 5
3 7 6
5 8 2
1 9 4
3 7 6
8 2 5
1 9 4
3 8 1
4 5 6
9 2 7
3 8 1
7 2 9
6 5 4
3 8 4
2 9 1
6 5 7
3 8 6
4 7 1
2 9 5
3 8 6
7 1 4
2 9 5
3 8 7
5 4 1
2 9 6
3 9 1
5 2 7
8 4 6
3 9 1
5 6 7
4 8 2
3 9 2
5 1 6
8 4 7
3 9 4
2 6 1
7 5 8
3 9 4
2 8 1
5 7 6
3 9 6
4 2 1
5 7 8
3 9 6
5 1 2
4 8 7
4 1 6
9 8 7
3 2 5
4 1 7
8 9 5
3 2 6
4 1 7
9 8 6
2 3 5
4 1 8
9 6 5
3 2 7
4 1 8
9 7 5
2 3 6
4 2 6
9 8 7
1 5 3
4 2 7
6 9 3
5 1 8
4 2 7
9 3 6
5 1 8
4 2 8
7 6 3
5 1 9
4 2 9
8 7 3
1 5 6
4 3 5
8 9 7
1 6 2
4 3 5
9 2 8
6 1 7
4 3 5
9 7 8
1 6 2
4 3 7
5 8 2
6 1 9
4 3 7
8 2 5
6 1 9
4 3 7
9 1 6
5 2 8
4 3 9
6 8 1
2 5 7
4 5 2
7 3 9
8 1 6
4 5 2
7 8 9
3 6 1
4 5 3
8 1 9
7 2 6
4 5 3
8 6 9
2 7 1
4 5 6
3 8 1
7 2 9
4 5 6
9 2 7
1 8 3
4 5 9
7 1 2
3 6 8
4 5 9
7 3 2
1 8 6
4 6 2
3 8 5
9 1 7
4 6 5
2 9 1
7 3 8
4 6 5
8 3 7
1 9 2
4 6 8
7 2 3
1 9 5
4 7 1
5 3 8
9 2 6
4 7 1
6 2 9
8 3 5
4 7 3
5 1 6
9 2 8
4 7 3
5 8 6
2 9 1
4 7 5
2 6 1
8 3 9
4 7 8
5 3 1
2 9 6
4 8 1
2 7 5
9 3 6
4 8 1
3 9 6
5 7 2
4 8 1
6 3 9
5 7 2
4 8 2
5 6 7
3 9 1
4 8 3
1 9 2
7 5 6
4 8 6
3 2 1
7 5 9
4 8 7
5 1 2
3 9 6
4 9 1
2 8 5
6 7 3
4 9 1
3 7 6
5 8 2
4 9 1
5 2 8
6 7 3
4 9 2
1 7 3
8 5 6
4 9 2
1 8 3
7 6 5
4 9 3
1 6 2
8 5 7
4 9 3
1 8 2
6 7 5
4 9 5
2 3 1
7 6 8
4 9 5
3 1 2
7 6 8
4 9 6
3 2 1
5 8 7
5 1 6
8 9 7
2 4 3
5 1 6
9 7 8
2 4 3
5 1 8
6 9 3
4 2 7
5 1 8
9 3 6
4 2 7
5 1 9
7 6 3
4 2 8
5 1 9
7 8 3
2 4 6
5 2 3
7 8 9
6 1 4
5 2 8
7 3 4
6 1 9
5 2 8
9 1 6
4 3 7
5 3 2
6 8 9
7 1 4
5 3 4
7 9 8
2 6 1
5 3 4
8 2 9
7 1 6
5 3 4
8 7 9
2 6 1
5 3 6
9 4 8
1 7 2
5 3 8
4 7 1
6 2 9
5 3 8
7 1 4
6 2 9
5 3 8
9 2 6
1 7 4
5 4 3
7 2 9
8 1 6
5 4 6
3 7 2
8 1 9
5 4 6
9 1 8
2 7 3
5 6 4
1 9 2
8 3 7
5 6 4
7 3 8
2 9 1
5 6 7
3 8 1
2 9 4
5 7 2
1 8 4
9 3 6
5 7 2
3 9 6
4 8 1
5 7 2
6 3 9
4 8 1
5 7 4
1 6 2
9 3 8
5 7 6
2 3 1
8 4 9
5 7 6
2 8 1
3 9 4
5 7 6
3 1 2
8 4 9
5 7 8
4 2 1
3 9 6
5 8 2
1 9 4
6 7 3
5 8 2
3 7 6
4 9 1
5 8 7
3 2 1
4 9 6
5 9 1
3 2 7
8 6 4
5 9 1
3 4 7
6 8 2
5 9 2
1 7 4
6 8 3
5 9 2
4 1 7
6 8 3
5 9 4
1 3 2
8 6 7
5 9 4
2 1 3
8 6 7
6 1 4
7 8 9
5 2 3
6 1 5
7 9 8
3 4 2
6 1 5
8 7 9
3 4 2
6 1 7
9 2 8
4 3 5
6 1 7
9 4 8
2 5 3
6 1 8
9 2 7
3 4 5
6 1 8
9 3 7
2 5 4
6 1 9
5 8 2
4 3 7
6 1 9
7 3 4
5 2 8
6 1 9
8 2 5
4 3 7
6 2 3
5 9 8
7 1 4
6 2 4
7 8 9
3 5 1
6 2 7
9 1 8
3 5 4
6 2 8
5 4 3
7 1 9
6 2 9
4 7 1
5 3 8
6 2 9
7 1 4
5 3 8
6 2 9
8 3 5
1 7 4
6 3 2
5 7 9
8 1 4
6 3 5
8 4 9
2 7 1
6 3 7
5 2 4
8 1 9
6 3 7
5 9 4
1 8 2
6 3 9
4 8 1
2 7 5
6 3 9
5 7 2
1 8 4
6 4 2
3 8 7
9 1 5
6 4 5
2 7 3
9 1 8
6 4 5
8 1 9
3 7 2
6 4 8
7 2 5
1 9 3
6 5 1
3 7 8
9 2 4
6 5 1
3 9 8
7 4 2
6 5 4
1 8 3
9 2 7
6 5 4
7 2 9
3 8 1
6 5 7
2 4 1
8 3 9
6 5 7
2 9 1
3 8 4
6 5 8
3 2 1
7 4 9
6 5 8
3 7 1
2 9 4
6 7 1
4 2 9
8 5 3
6 7 3
1 9 4
5 8 2
6 7 3
2 8 5
4 9 1
6 7 3
5 2 8
4 9 1
6 7 5
1 3 2
9 4 8
6 7 5
1 8 2
4 9 3
6 7 5
2 1 3
9 4 8
6 8 1
2 3 7
9 5 4
6 8 2
3 4 7
5 9 1
6 8 3
1 7 4
5 9 2
6 8 3
4 1 7
5 9 2
6 8 4
1 2 3
9 5 7
6 9 2
1 3 5
8 7 4
6 9 2
1 4 5
7 8 3
6 9 3
1 2 4
8 7 5
6 9 3
2 1 5
7 8 4
6 9 4
1 2 3
7 8 5
7 1 4
5 9 8
6 2 3
7 1 4
6 8 9
5 3 2
7 1 6
8 2 9
5 3 4
7 1 6
8 4 9
3 5 2
7 1 8
5 9 4
2 6 3
7 1 9
5 4 3
6 2 8
7 1 9
5 8 3
2 6 4
7 2 3
5 6 9
8 1 4
7 2 4
3 9 6
8 1 5
7 2 4
6 3 9
8 1 5
7 2 6
8 1 9
4 5 3
7 2 9
3 8 1
4 5 6
7 2 9
6 5 4
1 8 3
7 3 4
2 8 5
9 1 6
7 3 4
5 2 8
9 1 6
7 3 4
6 1 9
8 2 5
7 3 6
4 2 5
9 1 8
7 3 6
4 9 5
2 8 1
7 3 8
2 9 1
4 6 5
7 3 8
5 6 4
1 9 2
7 3 8
6 4 5
1 9 2
7 4 2
3 9 8
6 5 1
7 4 8
6 1 5
2 9 3
7 4 9
3 2 1
6 5 8
7 5 1
3 6 9
8 4 2
7 5 2
1 8 6
9 3 4
7 5 2
1 9 6
8 4 3
7 5 6
1 4 2
9 3 8
7 5 6
1 9 2
4 8 3
7 5 8
2 6 1
3 9 4
7 5 9
3 2 1
4 8 6
7 6 1
2 5 8
9 4 3
7 6 1
3 4 9
8 5 2
7 6 2
4 1 9
8 5 3
7 6 5
1 8 3
4 9 2
7 6 8
2 3 1
4 9 5
7 6 8
3 1 2
4 9 5
7 8 3
1 4 5
6 9 2
7 8 4
2 1 5
6 9 3
7 8 5
1 2 3
6 9 4
8 1 4
5 6 9
7 2 3
8 1 4
5 7 9
6 3 2
8 1 5
3 9 6
7 2 4
8 1 5
6 3 9
7 2 4
8 1 6
7 2 9
5 4 3
8 1 6
7 3 9
4 5 2
8 1 7
4 9 5
3 6 2
8 1 9
3 7 2
5 4 6
8 1 9
5 2 4
6 3 7
8 1 9
5 6 4
2 7 3
8 1 9
6 4 5
2 7 3
8 2 4
3 6 7
9 1 5
8 2 5
4 3 7
9 1 6
8 2 5
6 1 9
7 3 4
8 2 6
3 4 5
9 1 7
8 2 9
6 1 5
3 7 4
8 3 5
1 7 4
9 2 6
8 3 5
4 1 7
9 2 6
8 3 5
6 2 9
4 7 1
8 3 7
1 9 2
5 6 4
8 3 7
4 6 5
2 9 1
8 3 7
5 4 6
2 9 1
8 3 9
2 4 1
6 5 7
8 3 9
2 6 1
4 7 5
8 4 2
3 6 9
7 5 1
8 4 3
1 9 6
7 5 2
8 4 6
5 2 7
3 9 1
8 4 7
5 1 6
3 9 2
8 4 9
2 3 1
5 7 6
8 4 9
3 1 2
5 7 6
8 5 2
1 6 7
9 4 3
8 5 2
3 4 9
7 6 1
8 5 3
4 1 9
7 6 2
8 5 3
4 2 9
6 7 1
8 5 6
1 2 3
9 4 7
8 5 6
1 7 3
4 9 2
8 5 7
1 6 2
4 9 3
8 6 2
1 4 7
9 5 3
8 6 3
2 1 7
9 5 4
8 6 4
3 2 7
5 9 1
8 6 7
1 3 2
5 9 4
8 6 7
2 1 3
5 9 4
8 7 4
1 3 5
6 9 2
8 7 5
1 2 4
6 9 3
9 1 5
3 6 7
8 2 4
9 1 5
3 8 7
6 4 2
9 1 6
2 8 5
7 3 4
9 1 6
4 3 7
8 2 5
9 1 6
5 2 8
7 3 4
9 1 7
3 4 5
8 2 6
9 1 7
3 8 5
4 6 2
9 1 8
2 7 3
6 4 5
9 1 8
4 2 5
7 3 6
9 1 8
4 6 5
3 7 2
9 1 8
5 4 6
3 7 2
9 2 4
3 7 8
6 5 1
9 2 6
1 7 4
8 3 5
9 2 6
4 1 7
8 3 5
9 2 6
5 3 8
4 7 1
9 2 7
1 8 3
6 5 4
9 2 7
4 5 6
3 8 1
9 2 8
5 1 6
4 7 3
9 3 4
1 8 6
7 5 2
9 3 6
1 8 4
5 7 2
9 3 6
2 7 5
4 8 1
9 3 8
1 4 2
7 5 6
9 3 8
1 6 2
5 7 4
9 4 3
1 6 7
8 5 2
9 4 3
2 5 8
7 6 1
9 4 7
1 2 3
8 5 6
9 4 8
1 3 2
6 7 5
9 4 8
2 1 3
6 7 5
9 5 3
1 4 7
8 6 2
9 5 4
2 1 7
8 6 3
9 5 4
2 3 7
6 8 1
9 5 7
1 2 3
6 8 4
Votre programme doit produire ces mêmes 376 carrés solides, mais pas nécessairement dans cet ordre. La sortie n'a pas besoin d'être déterministe, c'est-à-dire que vous pouvez les sortir dans des ordres différents sur des exécutions différentes tant qu'elles sont toutes là.
Le code le plus court en octets gagne.
Le sujet des carrés robustes est né de ce message de discussion qui a conduit à une grande quantité de discussions sur leurs propriétés et comment les générer. Appels à Peter Taylor , feersum et Sp3000 pour la poursuite de la discussion, et en particulier à El'endia Starman pour la rédaction d' une séquence OEIS correspondante .
5 7 3\n\n
, il y a donc une ligne vierge après le dernier carré. Est-ce admissible?