UN PETIT CASSE-TÊTE ( PUZZLE )

cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 - 18 déc. 2003 à 17:45
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

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
Je dois faire la resolution de ce jeu, explique moi comment tu fais avec la methode MinMax.
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
18 déc. 2003 à 17:55
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).
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
18 déc. 2003 à 17:45
Euh... je crois que je suis tombé sur une partie qu'on ne peut pas finir!
Rejoignez-nous