Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1275 connectés 

  FORUM HardWare.fr
  Programmation
  C++

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°595580
red factio​n
Posté le 22-12-2003 à 14:48:29  profilanswer
 


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
mood
Publicité
Posté le 22-12-2003 à 14:48:29  profilanswer
 

n°595605
nraynaud
lol
Posté le 22-12-2003 à 15:20:34  profilanswer
 

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
n°595690
red factio​n
Posté le 22-12-2003 à 16:52:23  profilanswer
 

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

n°595706
nraynaud
lol
Posté le 22-12-2003 à 17:12:36  profilanswer
 

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
n°595714
red factio​n
Posté le 22-12-2003 à 17:27:03  profilanswer
 

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
n°595719
nraynaud
lol
Posté le 22-12-2003 à 17:42:47  profilanswer
 

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
n°595726
red factio​n
Posté le 22-12-2003 à 17:47:26  profilanswer
 

[: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
n°595732
red factio​n
Posté le 22-12-2003 à 17:53:15  profilanswer
 

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

n°595733
nraynaud
lol
Posté le 22-12-2003 à 17:54:28  profilanswer
 

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
n°595763
red factio​n
Posté le 22-12-2003 à 18:41:20  profilanswer
 

[:yoyoz]


Message édité par red faction le 22-12-2003 à 18:42:12
mood
Publicité
Posté le 22-12-2003 à 18:41:20  profilanswer
 

n°595764
red factio​n
Posté le 22-12-2003 à 18:41:54  profilanswer
 

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

n°595767
nraynaud
lol
Posté le 22-12-2003 à 18:45:32  profilanswer
 

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
n°595778
red factio​n
Posté le 22-12-2003 à 18:59:08  profilanswer
 

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

n°595782
nraynaud
lol
Posté le 22-12-2003 à 19:11:06  profilanswer
 

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


---------------
trainoo.com, c'est fini
n°595783
red factio​n
Posté le 22-12-2003 à 19:14:16  profilanswer
 

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

n°595786
nraynaud
lol
Posté le 22-12-2003 à 19:19:45  profilanswer
 

/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
n°595787
red factio​n
Posté le 22-12-2003 à 19:21:23  profilanswer
 

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

n°595788
red factio​n
Posté le 22-12-2003 à 19:22:30  profilanswer
 

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 :(

n°595790
nraynaud
lol
Posté le 22-12-2003 à 19:25:28  profilanswer
 

il arrive ce code ?


---------------
trainoo.com, c'est fini
n°595791
red factio​n
Posté le 22-12-2003 à 19:25:49  profilanswer
 

nraynaud a écrit :

il arrive ce code ?


 
mp

n°595792
red factio​n
Posté le 22-12-2003 à 19:26:38  profilanswer
 

impatient  :o

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

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

 

Sujets relatifs
w3c : comment tester ses pages ?OS-Unix : Tester si un fichier est un dossier
Tester un .htaccess sous winnt[Java] Evaluer le temps d'exécution d'un fonction.
Exercice d'algo [probleme resolu par Tentacle, algo p2 poste par Giz]Lire, afficher et écrire en meme temps
[Algo] Débutant à un poblème avec un exercicetemps de generation aléatoire
boucle if pour tester les doublons ...[php/mysql] Tester une chaine different de vide
Plus de sujets relatifs à : [CAML] algo a comprendre - viendez tester lIA en meme temps


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR