Avertissement: je ne connais aucune solution non bruteforce
Un carré gréco-latin est, pour deux ensembles de même longueur , un arrangement de cellules, chacune contenant une paire unique (sur l'ensemble du carré) d'un élément du premier ensemble et d'un élément du deuxième ensemble, de telle sorte que tous les premiers éléments et tous les seconds éléments des paires sont uniques dans leur ligne et leur colonne. Les ensembles les plus couramment utilisés sont, comme on pourrait le deviner, les premières lettres des alphabets grec et latin.
Voici une photo d'un carré gréco-latin 4x4:
Les carrés gréco-latins sont aussi utiles qu'ils le paraissent ( l'article de Wikipédia mentionne "la conception d'expériences, la programmation de tournois et la construction de carrés magiques"). Votre tâche est, étant donné un entier positif , de générer un carré gréco-latin .
Contribution
Un entier positif ; il est garanti qu'il existe carré gréco-latin (c'est-à-dire ).
Sortie
Un carré gréco-latin de longueur latérale n sous forme de tableau à deux dimensions, un tableau de tableaux, un tableau aplati ou directement émis.
Remarques
- Vous n'êtes pas obligé d'utiliser spécifiquement les alphabets grec et latin; par exemple, la sortie de paires d'entiers positifs est également autorisée.
- Si vous choisissez d'utiliser un alphabet qui ne peut pas être étendu arbitrairement, vous devez (théoriquement; votre code n'a pas à se terminer avant la mort thermique de l'univers) supporter une longueur de côté maximale d'au moins 20.
C'est le code-golf , donc le code le plus court gagne!