Solution minimale du jeu Traffic!
Un article de Wikipedia.
(→Solutions de grilles) |
(→Solutions de grilles) |
||
Ligne 54 : | Ligne 54 : | ||
|- align="center" | |- align="center" | ||
| 2 || [[Image:Traffic2.jpg]] || 11 || | | 2 || [[Image:Traffic2.jpg]] || 11 || | ||
+ | [[Media:Anim2.swf]] | ||
# (5,2)->(4,2) | # (5,2)->(4,2) | ||
# (6,3)->(6,1) | # (6,3)->(6,1) | ||
Ligne 64 : | Ligne 65 : | ||
|| 8 || 00:29:01 || 2753 | || 8 || 00:29:01 || 2753 | ||
|- align="center" | |- align="center" | ||
- | | 3 || [[Image:Traffic3.jpg]] || 6 || | + | | 3 || [[Image:Traffic3.jpg]] || 6 || |
+ | [[Media:Anim3.swf]] | ||
# (6,1)->(6,4) | # (6,1)->(6,4) | ||
# (3,1)->(5,1) | # (3,1)->(5,1) | ||
Ligne 82 : | Ligne 84 : | ||
|- align="center" | |- align="center" | ||
| 4 || [[Image:Traffic4.jpg]] || 7 || | | 4 || [[Image:Traffic4.jpg]] || 7 || | ||
+ | [[Media:Anim4.swf]] | ||
# (1,4)->(1,1) | # (1,4)->(1,1) | ||
# (2,4)->(1,4) | # (2,4)->(1,4) | ||
Ligne 94 : | Ligne 97 : | ||
|- align="center" | |- align="center" | ||
| 5 || [[Image:Traffic5.jpg]] || 11 || | | 5 || [[Image:Traffic5.jpg]] || 11 || | ||
+ | [[Media:Anim5.swf]] | ||
# (1,4)->(1,1) | # (1,4)->(1,1) | ||
# (2,4)->(1,4) | # (2,4)->(1,4) | ||
Ligne 105 : | Ligne 109 : | ||
|| 9 || 00:23:14 || 2139 | || 9 || 00:23:14 || 2139 | ||
|- align="center" | |- align="center" | ||
- | | 6 || [[Image:Traffic6.jpg]] || 11 || | + | | 6 || [[Image:Traffic6.jpg]] || 11 || |
+ | [[Media:Anim6.swf]] | ||
# (1,4)->(1,1) | # (1,4)->(1,1) | ||
# (2,4)->(1,4) | # (2,4)->(1,4) | ||
Ligne 117 : | Ligne 122 : | ||
|| 9 || 00:14:30 || 1637 | || 9 || 00:14:30 || 1637 | ||
|- align="center" | |- align="center" | ||
- | | 7 || [[Image:Traffic7.jpg]] || 9 || | + | | 7 || [[Image:Traffic7.jpg]] || 9 || |
+ | [[Media:Anim7.swf]] | ||
# (6,3)->(6,2) | # (6,3)->(6,2) | ||
# (5,5)->(5,2) | # (5,5)->(5,2) | ||
Ligne 134 : | Ligne 140 : | ||
|- align="center" | |- align="center" | ||
| 8 || [[Image:Traffic8.jpg]] || 14 || | | 8 || [[Image:Traffic8.jpg]] || 14 || | ||
+ | [[Media:Anim8.swf]] | ||
# (3,5)->(1,5) | # (3,5)->(1,5) | ||
# (4,6)->(1,6) | # (4,6)->(1,6) | ||
Ligne 148 : | Ligne 155 : | ||
|| 12 || 00:05:05 || 950 | || 12 || 00:05:05 || 950 | ||
|- align="center" | |- align="center" | ||
- | | 9 || [[Image:Traffic9.jpg]] || 12 || | + | | 9 || [[Image:Traffic9.jpg]] || 12 || |
+ | [[Media:Anim9.swf]] | ||
# (5,2)->(5,1) | # (5,2)->(5,1) | ||
# (1,4)->(2,4) | # (1,4)->(2,4) | ||
Ligne 163 : | Ligne 171 : | ||
|| 12 || 00:01:47 || 681 | || 12 || 00:01:47 || 681 | ||
|- align="center" | |- align="center" | ||
- | | 10 || [[Image:Traffic10.jpg]] || 12 || | + | | 10 || [[Image:Traffic10.jpg]] || 12 || |
+ | [[Media:Anim10.swf]] | ||
# (5,6)->(4,6) | # (5,6)->(4,6) | ||
# (6,3)->(6,4) | # (6,3)->(6,4) | ||
Ligne 186 : | Ligne 195 : | ||
|- align="center" | |- align="center" | ||
| 12 || [[Image:Traffic12.jpg]] || 8 || | | 12 || [[Image:Traffic12.jpg]] || 8 || | ||
+ | [[Media:Anim12.swf]] | ||
# (2,6)->(4,6) | # (2,6)->(4,6) | ||
# (3,3)->(3,4) | # (3,3)->(3,4) | ||
Ligne 213 : | Ligne 223 : | ||
| 16 || [[Image:Traffic16.jpg]] || 11 || || 21 || || | | 16 || [[Image:Traffic16.jpg]] || 11 || || 21 || || | ||
|- align="center" | |- align="center" | ||
- | | 17 || [[Image:Traffic17.jpg]] || 12 || | + | | 17 || [[Image:Traffic17.jpg]] || 12 || |
+ | [[Media:Anim17.swf]] | ||
# (5,1)->(5,3) | # (5,1)->(5,3) | ||
# (6,1)->(6,3) | # (6,1)->(6,3) | ||
Ligne 240 : | Ligne 251 : | ||
|| 24 || || | || 24 || || | ||
|- align="center" | |- align="center" | ||
- | | 18 || [[Image:Traffic18.jpg]] || 9 || | + | | 18 || [[Image:Traffic18.jpg]] || 9 || |
+ | [[Media:Anim18.swf]] | ||
# (1,1)->(4,1) | # (1,1)->(4,1) | ||
# (1,2)->(1,1) | # (1,2)->(1,1) | ||
Ligne 268 : | Ligne 280 : | ||
|| 25 || || | || 25 || || | ||
|- align="center" | |- align="center" | ||
- | | 19 || [[Image:Traffic19.jpg]] || 8 || | + | | 19 || [[Image:Traffic19.jpg]] || 8 || |
+ | [[Media:Anim19.swf]] | ||
# (2,3)->(2,5) | # (2,3)->(2,5) | ||
# (3,3)->(1,3) | # (3,3)->(1,3) | ||
Ligne 305 : | Ligne 318 : | ||
| 25 || [[Image:Traffic25.jpg]] || 13 || || 27 || || | | 25 || [[Image:Traffic25.jpg]] || 13 || || 27 || || | ||
|- align="center" | |- align="center" | ||
- | | 26 || [[Image:Traffic26.jpg]] || 12 || | + | | 26 || [[Image:Traffic26.jpg]] || 12 || |
+ | [[Media:Anim26.swf]] | ||
# (1,2)->(1,1) | # (1,2)->(1,1) | ||
# (2,3)->(1,3) | # (2,3)->(1,3) | ||
Ligne 336 : | Ligne 350 : | ||
|| 28 || || | || 28 || || | ||
|- align="center" | |- align="center" | ||
- | | 27 || [[Image:Traffic27.jpg]] || 10 || | + | | 27 || [[Image:Traffic27.jpg]] || 10 || |
+ | [[Media:Anim27.swf]] | ||
# (6,2)->(6,4) | # (6,2)->(6,4) | ||
# (4,3)->(5,3) | # (4,3)->(5,3) | ||
Ligne 367 : | Ligne 382 : | ||
|| 28 || || | || 28 || || | ||
|- align="center" | |- align="center" | ||
- | | 28 || [[Image:Traffic28.jpg]] || 12 || | + | | 28 || [[Image:Traffic28.jpg]] || 12 || |
+ | [[Media:Anim28.swf]] | ||
# (6,1)->(6,2) | # (6,1)->(6,2) | ||
# (3,1)->(5,1) | # (3,1)->(5,1) | ||
Ligne 400 : | Ligne 416 : | ||
|| 30 || || | || 30 || || | ||
|- align="center" | |- align="center" | ||
- | | 29 || [[Image:Traffic29.jpg]] || 12 || | + | | 29 || [[Image:Traffic29.jpg]] || 12 || |
+ | [[Media:Anim29.swf]] | ||
# (6,3)->(6,4) | # (6,3)->(6,4) | ||
# (4,3)->(5,3) | # (4,3)->(5,3) | ||
Ligne 435 : | Ligne 452 : | ||
|- align="center" | |- align="center" | ||
| 30 || [[Image:Traffic30.jpg]] || 10 || | | 30 || [[Image:Traffic30.jpg]] || 10 || | ||
+ | [[Media:Anim30.swf]] | ||
# (3,1)->(4,1) | # (3,1)->(4,1) | ||
# (1,1)->(2,1) | # (1,1)->(2,1) | ||
Ligne 470 : | Ligne 488 : | ||
|- align="center" | |- align="center" | ||
| 31 || [[Image:Traffic31.jpg]] || 11 || | | 31 || [[Image:Traffic31.jpg]] || 11 || | ||
+ | [[Media:Anim31.swf]] | ||
# (1,6)->(2,6) | # (1,6)->(2,6) | ||
# (1,3)->(1,5) | # (1,3)->(1,5) | ||
Ligne 509 : | Ligne 528 : | ||
|| 37 || 01:18:17 || 3947 | || 37 || 01:18:17 || 3947 | ||
|- align="center" | |- align="center" | ||
- | | 32 || [[Image:Traffic32.jpg]] || 11 || | + | | 32 || [[Image:Traffic32.jpg]] || 11 || |
+ | [[Media:Anim32.swf]] | ||
# (4,5)->(4,4) | # (4,5)->(4,4) | ||
# (5,6)->(4,6) | # (5,6)->(4,6) | ||
Ligne 549 : | Ligne 569 : | ||
|| 37 || 00:01:09 || 568 | || 37 || 00:01:09 || 568 | ||
|- align="center" | |- align="center" | ||
- | | 33 || [[Image:Traffic33.jpg]] || 12 || | + | | 33 || [[Image:Traffic33.jpg]] || 12 || |
+ | [[Media:Anim33.swf]] | ||
# (5,6)->(4,6) | # (5,6)->(4,6) | ||
# (6,1)->(6,4) | # (6,1)->(6,4) | ||
Ligne 593 : | Ligne 614 : | ||
|- align="center" | |- align="center" | ||
| 34 || [[Image:Traffic34.jpg]] || 12 || | | 34 || [[Image:Traffic34.jpg]] || 12 || | ||
+ | [[Media:Anim34.swf]] | ||
# (4,1)->(5,1) | # (4,1)->(5,1) | ||
# (4,2)->(4,1) | # (4,2)->(4,1) | ||
Ligne 639 : | Ligne 661 : | ||
|- align="center" | |- align="center" | ||
| 35 || [[Image:Traffic35.jpg]] || 11 || | | 35 || [[Image:Traffic35.jpg]] || 11 || | ||
+ | [[Media:Anim35.swf]] | ||
# (1,1)->(2,1) | # (1,1)->(2,1) | ||
# (5,1)->(5,4) | # (5,1)->(5,4) | ||
Ligne 685 : | Ligne 708 : | ||
|- align="center" | |- align="center" | ||
| 36 || [[Image:Traffic36.jpg]] || 12 || | | 36 || [[Image:Traffic36.jpg]] || 12 || | ||
+ | [[Media:Anim36.swf]] | ||
# (4,2)->(4,1) | # (4,2)->(4,1) | ||
# (1,3)->(2,3) | # (1,3)->(2,3) | ||
Ligne 731 : | Ligne 755 : | ||
|| 44 || 00:33:37 || 2556 | || 44 || 00:33:37 || 2556 | ||
|- align="center" | |- align="center" | ||
- | | 37 || [[Image:Traffic37.jpg]] || 13 || | + | | 37 || [[Image:Traffic37.jpg]] || 13 || |
+ | [[Media:Anim37.swf]] | ||
# (1,1)->(2,1) | # (1,1)->(2,1) | ||
# (1,2)->(1,1) | # (1,2)->(1,1) | ||
Ligne 782 : | Ligne 807 : | ||
|- align="center" | |- align="center" | ||
| 38 || [[Image:Traffic38.jpg]] || 11 || | | 38 || [[Image:Traffic38.jpg]] || 11 || | ||
+ | [[Media:Anim38.swf]] | ||
# (4,6)->(3,6) | # (4,6)->(3,6) | ||
# (6,2)->(6,4) | # (6,2)->(6,4) | ||
Ligne 833 : | Ligne 859 : | ||
|- align="center" | |- align="center" | ||
| 39 || [[Image:Traffic39.jpg]] || 12 || | | 39 || [[Image:Traffic39.jpg]] || 12 || | ||
+ | [[Media:Anim39.swf]] | ||
# (3,1)->(5,1) | # (3,1)->(5,1) | ||
# (3,2)->(4,2) | # (3,2)->(4,2) |
Version du 24 avril 2008 à 10:39
Sommaire |
Solution minimale du jeu Traffic!
But
Déterminer le nombre minimal de mouvements pour résoudre une grille du jeu Traffic!.
Introduction
Premièrement, Merci à Phillip Cheng pour l'implémentation de Traffic! et un Grand Merci posthume à Nob Yoshigahara pour sa lumineuse idée.
Traffic! est une implémentation gratuite sous Palm du jeu 'Rush Hour' conçu par Nob Yoshigahara.
Il consiste en un plateau carré de 6 unités sur lequel se trouve des blocs de 2 ou 3 unités qui peuvent se déplacer verticalement ou horizontalement.
Le but du jeu est de faire sortir un bloc de 2 unités horizontalement en déplaçant les autres blocs.
Une croquis vaut mieux qu'un long discours, donc voici une image d'une grille de Traffic! :
Le bloc blanc doit être déplacé vers la sortie.
Résultats
La méthode utilisée pour résoudre une grille de Traffic! est de disposer de trois listes.
- La première contient la liste des grilles en traitement.
- La deuxième contient la liste des grilles à traiter à la prochaine étape.
- La troisième contient la liste des grilles déjà connues.
Méthode de résolution d'une grille
Initialement (niveau 0), la première et la troisième liste contiennent la liste de Traffic! à résoudre; la deuxième liste est vide.
A chaque niveau de la résolution,
- Pour chaque grille de la première liste, l'ensemble des coups (déplacements des blocs) est calculé.
- S'il est possible de terminer une grille par le déplacement du bloc à sortir de la grille, c'est le seul coup qui est considéré pour la grille.
- Si jouer le coup pour la grille en question conduit à une grille inconnue, c'est à dire qui n'est pas dans la troisième liste, cette nouvelle grille est ajoutée à la deuxième liste et à la troisième liste des grilles connues.
- Sinon un nouveau coup est considéré, jusqu'à épuisement des coups et des grilles de la première liste.
- A la fin du niveau, la deuxième liste des grilles à traiter prend la place de la première liste des grilles en traitement et la deuxième liste redevient vide.
Solutions de grilles
Niveau | Grille | Nombre de blocs | Solution | Nombre de coups | Durée des calculs (HH:MM:SS) | Nombre de grilles différentes |
---|---|---|---|---|---|---|
1 | 8 | Media:Anim1.swf
| 8 | 00:05:41 | 1067 | |
2 | 11 |
| 8 | 00:29:01 | 2753 | |
3 | 6 |
| 14 | 00:01:40 | 770 | |
4 | 7 |
| 9 | 00:00:23 | 356 | |
5 | 11 |
| 9 | 00:23:14 | 2139 | |
6 | 11 |
| 9 | 00:14:30 | 1637 | |
7 | 9 |
| 13 | 01:23:17 | 4613 | |
8 | 14 |
| 12 | 00:05:05 | 950 | |
9 | 12 |
| 12 | 00:01:47 | 681 | |
10 | 12 |
| 17 | 00:16:32 | 1847 | |
11 | 8 | 25 | ||||
12 | 8 |
| 17 | 00:04:45 | 1267 | |
13 | 13 | 16 | ||||
14 | 12 | 17 | ||||
15 | 14 | 23 | ||||
16 | 11 | 21 | ||||
17 | 12 |
| 24 | |||
18 | 9 |
| 25 | |||
19 | 8 |
| 22 | |||
20 | 9 | 10 | ||||
21 | 7 | 21 | ||||
22 | 12 | 26 | ||||
23 | 10 | 29 | ||||
24 | 10 | 25 | ||||
25 | 13 | 27 | ||||
26 | 12 |
| 28 | |||
27 | 10 |
| 28 | |||
28 | 12 |
| 30 | |||
29 | 12 |
| 31 | |||
30 | 10 |
| 32 | 00:05:39 | 1158 | |
31 | 11 |
| 37 | 01:18:17 | 3947 | |
32 | 11 |
| 37 | 00:01:09 | 568 | |
33 | 12 |
| 40 | 01:36:05 | 3960 | |
34 | 12 |
| 43 | 01:58:33 | 4364 | |
35 | 11 |
| 43 | |||
36 | 12 |
| 44 | 00:33:37 | 2556 | |
37 | 13 |
| 47 | 00:24:18 | 1941 | |
38 | 11 |
| 48 | 01:01:16 | 3755 | |
39 | 12 |
| 50 | 00:59:53 | 3581 | |
40 | 13 | Media:Anim40.swf
| 51 | 00:52:22 | 3024 |
Conclusions
- Le nombre minimal des mouvements nécessaires pour résoudre une grille déterminé par ce logiciel correspond à celui indiqué par le programme Traffic!.
- Dans le programme Traffic! le nombre minimal de mouvements nécessaire à résoudre une grille s'affiche qu'une fois la grille résolue. Une question se pose : Est-ce que le nombre minimal de mouvements pour résoudre la grille est calculé lors de la résolution de la grille ou est-il préalablement connu ?
- PP Compiler génère une erreur de compilation "Out of memory(1)" si le nombre de grilles spécifiées dans Trafficsamples.pas dépasse les 35. Il faut donc procéder en plusieurs étapes pour résoudre les 40 grilles de Traffic!
- Un affichage graphique de la grille et de sa solution serait avantageux.
Ressources
- Jeu Rush Hour conçu par Nob Yoshigahara http://www.thinkfun.com
- Jeu gratuit Traffic! Media:Traffic.zip
- Solution minimale du jeu Traffic! Media:Traffic_pas.PDB et Media:Trafficsamples_pas.PDB
- Source Traffic.pas et Trafficsamples.pas
Catégories: Logiciel | Pascal | Palm