Dans ce jeu, chaque pièce possède 8 connexions avec les pièces voisines.
Il y a à priori 7×5×3×1 = 105 façons de les relier, mais :
Les 5 pièces qui restent inchangées par rotation de ± π/2 ont été trouvées
une seule fois (exemple pièce 0).
Les 10 qui ne sont inchangées que par rotation de π ont été trouvées
deux fois (exemple pièce 12).
Les 20 qui restent ont été trouvées 4 fois.
Soit seulement 35 pièces différentes.
Noter que les pièces 18 et 30 par exemple sont image l'une de l'autre dans un miroir :
ce sont deux pièces différentes.
Une 36ème pièce est ajoutée pour complèter le tableau de 6×6.
Les 36 pièces sont montrées sur la figure, dans leur position initiale au démarrage du programme.
Le jeu est complèté par une "bordure" fixe complètant le trajet.
Pour pouvoir peindre les boucles de diverses couleurs, chaque pièce est formée
de la superposition des 4 chemins élémentaires la constituant.
Il y a 8 sortes de chemins élémentaires. En fait deux d'entre eux sont dupliqués avec une
forme légèrement différente pour rendre les tracés moins
ambigüs (8 et 9 identiques à 3,7 mais décalés).
Deux trajets supplémentaires correspondent aux entrées sorties de la boucle (la 36ème pièce).
Chaque trajet est tracé par une courbe définie par 4 points (CubicCurve2D).
Ces points sont indiqués sur la figure, sur une grille 6×6 interne à la pièce.
Noter pour les trajets 10 et 11 que les deux points de contrôle sont confondus.
Le tableau de jeu est défini par la liste des pièces sur chaque case et leur rotation.
Diverses tables statiques définissent pour chaque pièce les chemins élémentaires la constituant,
et pour chaque chemin élémentaire la courbe (les 4 points).
L'affichage consiste à parcourir, en partant de l'extrémité, le trajet des différents morceaux successifs,
en gardant trace dans un tableau des points de connexion traversés.
Le trajet se termine si on revient à la pièce spéciale 35.
On cherche alors si des points de raccordement n'ont pas encore été visités, donnant le point de
départ d'un nouveau trajet, d'une autre couleur, qui se termine par retour au point de départ
(en fait quand on rencontre une connexion déja visitée).
Et on répète jusqu'à ce que tous les points de connexion aient été visités.
L'emplacement de la pièce spéciale est suivi au cours des échanges pour la retrouver directement.
Le tableau de jeu est dupliqué pour conserver sa valeur initiale (réinitialisée en cliquant sur "rejouer").
La couleur de fond des cases est modifiée si pour cette case le tableau actuel est
différent du tableau initial, en tenant compte des pièces symétriques.
Noter qu'il sagit d'une symétrie "topologique" : la pièce 31 par exemple est "topologiquement" inchangée par rotation,
bien que le dessin apparaisse modifié.
Au démarrage du jeu, la position est la position "canonique" les pièces étant dans l'ordre 0,1,2,3...35.
Une nouvelle partie est obtenue en tirant au hasard les pièces et leur rotation.
Le reste est du détail mécanique plein de cambouis...