Boucles - détails

Ce jeu a été imaginé, sous forme de plateau de jeu et de pièces réelles, en 1979 par Bernard Girette. Les règles d'origine définissent un jeu à deux joueurs, ici c'est une version informatique et sous forme de solitaire.

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.

Notes sur la programmation

Initialement le jeu était programmé en Javascript, nécessitant de charger de nombreuses images (les différents morceaux de pièces, avec toutes les orientations et les couleurs possibles, soit 352 fichiers !).
Ceci ne fonctionnant de toute façon plus (superposition d'images incompatibles avec le menu en haut de page) et pour allèger drastiquement le jeu, il a été reprogrammé sous forme d'une applet Java (0 images, et un seul fichier jar de 8K).

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é.

Topologie des pièces

Un tableau décrit la topologie de chaque pièce, et donne le numéro de la sortie pour chaque entrée.
Par exemple la pièce 06 : [4,2,1,6,0,7,3,5]
L'effet d'une rotation r de la pièce est d'ajouter 2r modulo 8 au numéro des sorties.
Ce tableau permet de suivre commodément le trajet des boucles, de pièce en pièce.
Au bord, on revient dans la même pièce par entrée = sortie1.
Sinon l'entrée de la nouvelle pièce est la sortie 5 de la précédente.

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...

Solution

Le problème admet toujours une solution, bien entendu. La trouver est une autre histoire... et bien au dela des possibilités du programme. Une recherche exhaustive est totalement exclue.
A partir de la position canonique, il suffit des opérations suivantes :

  1. échange pièces (E1) et (B5), (B5) tournée de 90° [dans le sens horaire]
  2. échange pièces (F3) et (D5), (F3) tournée de 90°, (D5) tournée de 90°
  3. échange de (F2) avec (B3) donne une grande boucle, mais isole la partie droite.
  4. En faisant alors pivoter E3 de 90°, c'est gagné !

 

Accueil Arithmétiques Géométrique Divers Thèmes Scripts Jeux Exercices Parent