Voici toutes les matrices binaires 2x2
#0  #1  #2  #3  #4  #5  #6  #7  #8  #9  #10 #11 #12 #13 #14 #15
--  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  
00  00  00  00  01  01  01  01  10  10  10  10  11  11  11  11  
00  01  10  11  00  01  10  11  00  01  10  11  00  01  10  11  
Deux matrices carrées binaires sont équivalentes sous la relation ~si l'une peut être mappée sur l'autre par un nombre quelconque de réflexions dans les axes horizontal ou vertical .
#1 ~ #2en réflexion dans l'axe vertical, il suffit donc d'en garder un (peu importe lequel). De même #3 ~ #12, #6 ~ #9et ainsi de suite.
L'OBJECTIF est de produire un programme qui prend une seule entrée Net imprime autant de N x Nmatrices binaires qu'il en existe de sorte que toutes les matrices en sortie soient distinctes sous la relation ci-dessus.
Dans un pseudocode ondulé à la main, une solution admissible serait
define M[i] = N by N matrix with bit pattern equal to i
for i = 0 to (2^(N^2)) - 1
    valid = true
    for j = i+1 to (2^(N^2)) - 1
        if (equivalent(M[i], M[j]))
            valid = false
            break
    if (valid)
        print (M[i])
Pour l'entrée, N=2une sortie valide serait
00  00  00  01  10  01  11
00  01  11  01  01  11  11
Mais en sélectionnant différentes matrices de la même classe d'équivalence, une autre sortie valide serait
00  10  11  11  11  10  01
00  00  00  10  11  10  10
L'ordre des matrices n'a pas d'importance, le choix particulier parmi les matrices équivalentes n'a pas d'importance et les espaces n'ont pas d'importance, affichez les matrices comme vous le souhaitez tant qu'elles sont lisibles par l'homme.
La sortie doit être exhaustive.
Le code le plus court gagne.
EDIT: ceci est mon premier article de golf et j'ai changé d'avis sur les critères gagnants.
Code le plus court dans une langue non spécifiquement conçue pour la concision / le golf gains de .
J'espère que ce n'est pas une mauvaise étiquette de changer ce critère post-hoc, mais je pense que le faire dans un langage "normal" est une proposition beaucoup plus intéressante .