cs_Forman
Messages postés600Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 6 avril 2010
-
18 déc. 2003 à 17:45
ozanyy
Messages postés4Date d'inscriptionmardi 8 avril 2003StatutMembreDerniè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.
ozanyy
Messages postés4Date d'inscriptionmardi 8 avril 2003StatutMembreDerniè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és600Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 6 avril 20101 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és600Date d'inscriptionsamedi 8 juin 2002StatutMembreDernière intervention 6 avril 20101 18 déc. 2003 à 17:45
Euh... je crois que je suis tombé sur une partie qu'on ne peut pas finir!
21 avril 2004 à 11:42
18 déc. 2003 à 17:55
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).
18 déc. 2003 à 17:45