[CAML] algo a comprendre - viendez tester lIA en meme temps

algo a comprendre - viendez tester lIA en meme temps [CAML] - C++ - Programmation

Marsh Posté le 22-12-2003 à 14:48:29    


http://users.skynet.be/fa218598/p4.exe
 
je conseille le niv 8 ou en dessous
 
pour ceux qui ont pas confiance : un ptit coup de win32dasm pour sapercevoir quil ny a aucun acces a la base de registre ou aux fichiers
 
bon la fonction devaluation jme suis un peu inspiré de lalgo ce dessous mais le reste est entirement de moi  
 

Code :
  1. let eval_quatre m l_dep c_dep delta_l delta_c =
  2. let n = ref 0 and e = ref Vide
  3. and x = ref c_dep and y = ref l_dep
  4. in try
  5. for i = 1 to 4 do
  6. if !y<0 or !y>=lig or !x<0 or !x>=col then raise Arg_invalid ;
  7. ( match m.(!y).(!x) with
  8. A -> if !e = B then raise Valeur_nulle ;
  9. incr n ;
  10. if !n = 4 then raise (Quatre plusI) ;
  11. e := A
  12. | B -> if !e = A then raise Valeur_nulle ;
  13. incr n ;
  14. if !n = 4 then raise (Quatre moinsI);
  15. e := B;
  16. | Vide -> () ) ;
  17. x := !x + delta_c ;
  18. y := !y + delta_l
  19. done ;
  20. valeur.(!n) * (if !e=A then 1 else -1)
  21. with
  22. Valeur_nulle | Arg_invalid -> 0
  23. let eval_bloc m e cmin cmax lmin lmax dx dy =
  24. for c=cmin to cmax do for l=lmin to lmax do
  25. e := !e + eval_quatre m l c dx dy
  26. done done
  27. let evaluer b m =
  28. try let evaluation = ref 0
  29. in (* evaluation des lignes *)
  30. eval_bloc m evaluation 0 (lig-1) 0 (col-4) 0 1 ;
  31. (* evaluation des colonnes *)
  32. eval_bloc m evaluation 0 (col-1) 0 (lig-4) 1 0 ;
  33. (* diagonales partant de la premiere ligne (à droite) *)
  34. eval_bloc m evaluation 0 (col-4) 0 (lig-4) 1 1 ;
  35. (* diagonales partant de la premiere colonne (à droite) *)
  36. eval_bloc m evaluation 1 (lig-4) 0 (col-4) 1 1 ;
  37. (* diagonales partant de la premiere ligne (à gauche) *)
  38. eval_bloc m evaluation 3 (col-1) 0 (lig-4) 1 (-1) ;
  39. (* diagonales partant de la derniere colonne (à gauche) *)
  40. eval_bloc m evaluation 1 (lig-4) 3 (col-1) 1 (-1) ;
  41. !evaluation
  42. with Quatre v -> v


 
 
voila je c a peu pres ce que ca fait, le probleme c la comprehension de la fonction evaluer (les autres c ok)
en gros ca lance une analyse verticale des lignes (en partant du bas) et aussi horizontale (en partant de la gauche)
 
le seul probleme c pour les diagonales  
1 1   de bas gauche vers haut droite  1 -1  de bas droite vers haut gauche, mais pour le reste je comprend pas trop
 
cette fonction est sensée évaluer un plateau de jeu puissance 4 pour minmax


Message édité par red faction le 22-12-2003 à 18:43:14
Reply

Marsh Posté le 22-12-2003 à 14:48:29   

Reply

Marsh Posté le 22-12-2003 à 15:20:34    

c'est quoi le problème ? les 2 derniers paramètres passés à eval_bloc sont les coordonnée du vecteur directeur du parcour.
 

Code :
  1. 0 1 -> -
  2. 1 0 -> |
  3. 1 1 -> /
  4. 1 -1-> \


après, il y a le point de départ des diagonales car le pb est que ta grille est finie :

Code :
  1. .....|   x         |
  2. .....|  x          |
  3. .....| x        o  |
  4. .....|x        o   |
  5. .....|        o    |
  6. .....|_______o_____|


 
tester l'alignement des x ne peut se faire qu'en partant de la colone de droite car l'intersection de la diagonale avec la ligne du bas est en dehors du jeu. symétriquement, tester l'alignement de 'o' nécessite de partir de la ligne du bas car l'intersection de cette diagonale avec la première colone est en dehors du jeu.
 
C'est pour ça que les coordonnées du point de départ de l'alignement qu'on teste sont incluse à la fonction.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-12-2003 à 16:52:23    

http://users.skynet.be/fa218598/p4.gif
 
en gros ca fait ca non ?
 

Reply

Marsh Posté le 22-12-2003 à 17:12:36    

non, ça fait les lignes, les colones et 2 fois chaque diagonale (avec un point de départ différent), pour la raison que je t'ai expliquée.
Mais ça parcourt toujours les diagonales dans le même sens, comme tu peux le voir dans les 2 derniers paramètres.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-12-2003 à 17:27:03    

nraynaud a écrit :

non, ça fait les lignes, les colones et 2 fois chaque diagonale (avec un point de départ différent), pour la raison que je t'ai expliquée.
Mais ça parcourt toujours les diagonales dans le même sens, comme tu peux le voir dans les 2 derniers paramètres.

ok c bon now
 
 
les deux premieres instructions pour les diagonales font ca :  
 
  eval_bloc mat evaluation 0 (col-4) 0 (lig-4) 1 1 ;    
  eval_bloc mat evaluation 3 (col-1) 0 (lig-4) 1 (-1);
 
 
http://users.skynet.be/fa218598/p42.gif
 
 
 
mais je vois pas lutilite de ces 2 la vu que tout a ete balaye :
 eval_bloc mat evaluation 1 (lig-4) 0 (col-4) 1 1 ;
 eval_bloc mat evaluation 1 (lig-4) 3 (col-1) 1 (-1);


Message édité par red faction le 22-12-2003 à 17:27:51
Reply

Marsh Posté le 22-12-2003 à 17:42:47    

non, les 2 derniers paramètres sont la DIRECTION du balayage pas le point de départ.
 
eval_bloc m evaluation 0 (col-4) 0 (lig-4) 1 1 ;

Code :
  1. .....|     ////////|
  2. .....|    /////////|
  3. .....|   //////////|
  4. .....|  ///////////|
  5. .....| ////////////|
  6. .....|/////////////|


 
  (* diagonales partant de la premiere colonne (à droite) *)
  eval_bloc m evaluation 1 (lig-4) 0 (col-4) 1 1 ;  

Code :
  1. .....|//////       |
  2. .....|/////        |
  3. .....|////         |
  4. .....|///          |
  5. .....|//           |
  6. .....|/____________|


 
 
  (* diagonales partant de la premiere ligne (à gauche) *)
  eval_bloc m evaluation 3 (col-1) 0 (lig-4) 1 (-1) ;
 

Code :
  1. .....|\\\\\\\\     |
  2. .....|\\\\\\\\\    |
  3. .....|\\\\\\\\\\   |
  4. .....|\\\\\\\\\\\  |
  5. .....|\\\\\\\\\\\\ |
  6. .....|\\\\\\\\\\\\\|


 
 
  (* diagonales partant de la derniere colonne (à gauche) *)
  eval_bloc m evaluation 1 (lig-4) 3 (col-1) 1 (-1) ;[/g]  

Code :
  1. .....|       \\\\\\|
  2. .....|        \\\\\|
  3. .....|         \\\\|
  4. .....|          \\\|
  5. .....|           \\|
  6. .....|____________\|


 
bon, j'ai pris la première ligne en bas, il fallait peut-être la prendre en haut, mais c'est l'esprit.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-12-2003 à 17:47:26    

[:prosterne] merci merci  
 
 
 
 
sinon a quoi ca sert de cherchez des diagonales dans le sens / dans les coins haut gauche et bas droit sachant que au plus on pourra connecter 3 pions....


Message édité par red faction le 22-12-2003 à 17:50:43
Reply

Marsh Posté le 22-12-2003 à 17:53:15    

au debut je pensait
eval_bloc m evaluation 0 (col-4) 0 (lig-4) 1 1 ;

Code :
  1. .....|     ////////|
  2. .....|    /////////|
  3. .....|   ///////// |
  4. .....|  /////////  |
  5. .....| /////////   |
  6. .....|/////////    |


 
mais bon comme je tu mle dit c pas ca

Reply

Marsh Posté le 22-12-2003 à 17:54:28    

heu passke j'ai pas lu tout le programme, les soustractions (-4) et les point de départ à 3 sont là pour ça ...


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-12-2003 à 18:41:20    

[:yoyoz]


Message édité par red faction le 22-12-2003 à 18:42:12
Reply

Marsh Posté le 22-12-2003 à 18:41:20   

Reply

Marsh Posté le 22-12-2003 à 18:41:54    

l'interface est toute pourrie mais c pas let but non plus

Reply

Marsh Posté le 22-12-2003 à 18:45:32    

up de quoi ? Comme tu le dis, il va pas tester là où c'est matériellement impossible qu'il y ait 4 pions alignés.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-12-2003 à 18:59:08    

nraynaud a écrit :

up de quoi ? Comme tu le dis, il va pas tester là où c'est matériellement impossible qu'il y ait 4 pions alignés.


 
ben le lien au dessus du topic

Reply

Marsh Posté le 22-12-2003 à 19:11:06    

'tain t'as tout changé !
 
On peut avoir le code ocaml plutôt ? j'ai un mac.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-12-2003 à 19:14:16    

nraynaud a écrit :

'tain t'as tout changé !
 
On peut avoir le code ocaml plutôt ? j'ai un mac.


 
tu connait le site dou le code est tire?  
 
ya longtemps que tu fait du caml
 
pour le source il arrive dans 2 sec

Reply

Marsh Posté le 22-12-2003 à 19:19:45    

/o\ j'ai le bouquin sur mon bureau /o\
J'ai jamais dû lire cette partie.
 
je sais pas combien de temps ça fait que je connais, peut-être 3-4 ans.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-12-2003 à 19:21:23    

nraynaud a écrit :

/o\ j'ai le bouquin sur mon bureau /o\
J'ai jamais dû lire cette partie.
 
je sais pas combien de temps ça fait que je connais, peut-être 3-4 ans.


 
si tarrive a resoudre mon prob total respect

Reply

Marsh Posté le 22-12-2003 à 19:22:30    

ca fait des semaines que je cherche a le resoudre , le pire c que je doit presenter ca bientot (en janvier) et sy y me fait un coup pareil lors de la presentation :(

Reply

Marsh Posté le 22-12-2003 à 19:25:28    

il arrive ce code ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-12-2003 à 19:25:49    

nraynaud a écrit :

il arrive ce code ?


 
mp

Reply

Marsh Posté le 22-12-2003 à 19:26:38    

impatient  :o

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed