UN PETIT CASSE-TÊTE ( PUZZLE )

Messages postés
663
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
- - Dernière réponse : ozanyy
Messages postés
4
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
7 mai 2004
- 21 avril 2004 à 11:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18781-un-petit-casse-tete-puzzle

Afficher la suite 
cs_Forman
Messages postés
663
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1 -
Euh... je crois que je suis tombé sur une partie qu'on ne peut pas finir!
cs_Forman
Messages postés
663
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1 -
Euh... je crois que je suis tombé sur une partie qu'on ne peut pas finir!
En fait, c'est dans la partie InitGame, tu écris:

For N := 1 To 50 Do
Begin
I := Random(CUR_DIM) + 1;
J := Random(CUR_DIM) + 1;
II := Random(CUR_DIM) + 1;
JJ := Random(CUR_DIM) + 1;
nValue := PlayMatrix[I,J];
PlayMatrix[I,J] := PlayMatrix[II,JJ];
PlayMatrix[II,JJ] := nValue;
End;

ce qui correspond à faire des permutations aléatoires sur la matrice des cases, en partant du puzzle reconstruit. Le problème, c'est que la chemin inverse pour revenir au puzzle de départ lorsqu'on joue n'existe pas forcément...
Imaginons que plutot que d'effectuer la boucle 50 fois, tu ne le fais qu'une fois, et qu'elle échange 2 cases contigües. Eh bien, tu remarqueras qu'en jouant, si tu veux permuter ces 2 cases, il te faut aussi en permuter 2 autres... donc le jeu est impossible à finir.

Shématiquement, il faudrait faire:

white square:=case en bas à droite
for n:=1 to 50 do
case random(4) of
0:déplacer le white square vers la gauche
1:vers la droite
2:en haut
3:en bas
end;

Alors, tu es sur que le jeu a une solution, puisque tu es parti d'une configuration initiale où le puzzle est résolu, et que tu n'as fait ques des permutations autorisées qui sont inversibles (c'est à dire où l'in peut revenir en arrière).
ozanyy
Messages postés
4
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
7 mai 2004
-
Je dois faire la resolution de ce jeu, explique moi comment tu fais avec la methode MinMax.