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

 


Dernière réponse
Sujet : problème en camL
sire de Botcor tiens... un brestois !

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
sire de Botcor tiens... un brestois !
xav14

lordankou a écrit a écrit :

il sert à quoi l'algo de huffman ?




 
c'est une méthode de compression je crois
 
il me semble que c'est ca qui est tombé a mon exam de juin (que j'ai eu :D sans rien foutre)

lordankou et bon voilà ça marche mais bon ça c vraiment que le début. il faut que j'inclus la 3e dimension et ensuite rajouter peut être une notion de temps  
 

Code :
  1. #open "graphics";;
  2. open_graph "";;
  3. let init_matrice longueur_matrice nombre =
  4.   let matrice = make_matrix longueur_matrice longueur_matrice 0 in
  5.    for compteur = 1 to (longueur_matrice-2) do
  6.     for compteur2 = 1 to (longueur_matrice-2) do
  7.      matrice.(compteur).(compteur2) <-(random__int nombre)
  8.     done ;
  9.    done ;
  10. matrice ;;
  11. let dessiner_matrice x_depart y_depart matrice rayon_cellule=
  12. for compteur = 0 to (vect_length matrice -1) do
  13.   for compteur2 = 0 to (vect_length matrice -1) do
  14.     match matrice.(compteur).(compteur2) with
  15.      |1 -> set_color black ; fill_circle (x_depart+rayon_cellule*compteur*2) (x_depart+rayon_cellule*compteur2*2) rayon_cellule
  16.      |_ -> set_color white ; fill_circle (x_depart+rayon_cellule*compteur*2) (x_depart+rayon_cellule*compteur2*2) rayon_cellule         
  17.   done ;
  18. done ;
  19. ;;
  20. let successeur_matrice matrice matrice_suivante =
  21.     let lg = (vect_length matrice) in
  22.     for compteur = 1 to (lg-2) do
  23.       for compteur2 = 1 to (lg-2) do
  24.         match (matrice.(compteur-1).(compteur2-1)+matrice.(compteur-1).(compteur2)+matrice.(compteur-1).(compteur2+1)+matrice.(compteur).(compteur2-1)+matrice.(compteur).(compteur2+1)+matrice.(compteur+1).(compteur2-1)+matrice.(compteur+1).(compteur2)+matrice.(compteur+1).(compteur2+1)) with
  25.          |2 -> if (matrice.(compteur).(compteur2)=1) then matrice_suivante.(compteur).(compteur2) <- 1 else matrice_suivante.(compteur).(compteur2) <- 0
  26.          |3 -> matrice_suivante.(compteur).(compteur2) <- 1 
  27.          |_ -> matrice_suivante.(compteur).(compteur2) <- 0         
  28.       done ;
  29.     done ;
  30. matrice_suivante;;
  31. clear_graph();;
  32. let matrice_suivante = make_matrix 10 10 0 ;;
  33. let test = let matrice = (init_matrice 10 2) in
  34. dessiner_matrice 250 200 matrice 5 ;
  35. dessiner_matrice 100 100 (successeur_matrice matrice matrice_suivante) 5 ;;
  36. let boucle matrice longueur x_depart y_depart rayon_cellule =
  37. let matrice_suivante = (make_matrix longueur longueur 0) and matrice_temporaire = (make_matrix longueur longueur 0) in
  38. calcul matrice matrice_suivante ;
  39. where rec calcul matrice matrice_suivante =
  40.   for compteur = 0 to 1 do
  41.    ();
  42.   done ;
  43.   dessiner_matrice x_depart y_depart matrice rayon_cellule ;
  44.   calcul (successeur_matrice matrice matrice_suivante) matrice_suivante ;;
  45. clear_graph();;
  46. boucle (init_matrice 20 2) 20 100 100 2 ;;

LeGreg

lordankou a écrit a écrit :

oui mais je trouve que avec un fort typage on a un algo bien propre et pour le récursif je sais pas ce que ça donne en c++



 
Disons que si tu codes tout de go en recursif en C++
meme pour du terminal il ne va pas te dérécursifier à la main.
Par contre, il y a des cas ou dérécursifier passe par une gestion manuelle d'une pile, donc ca peut-etre un plus si tu laisses le langage gérer la pile pour toi.
 
Sauf qu'evidemment la pile a une taille limitée en mémoire (par l'OS ou le langage) et donc parfois tu ne peux pas faire sans gérer ta pile sans reposer sur celle du système :).
 
Sinon Caml est tres bon pour plein de choses pas seulement le recursif mais passons.
 
A+
LeGreg

farib ....
lordankou il sert à quoi l'algo de huffman ?
farib allez pour le plaisir : algo de huffman
 

Code :
  1. type arbre= Feuille of char|Noeud of (arbre*arbre);;
  2. let rec ajoute element liste =
  3. match liste with
  4. []->[element,1]
  5. |(lettre,nbr)::l-> if element = lettre then (element,(nbr+1))::l
  6.                    else (lettre,nbr)::(ajoute element l);;
  7. let rec frequence texte liste =
  8. if texte = "" then liste
  9. else frequence (sub_string texte 1 ((string_length texte)-1) ) (ajoute  texte.[0] liste);;
  10. let double_min liste =
  11. let rec mini_aux av ap mini =
  12. match ap with
  13. []->av,mini
  14. |(a,b)::l->if b < (snd mini) then (mini_aux (mini::av) l (a,b))
  15.   else mini_aux ((a,b)::av) l mini
  16. in ( let truc = mini_aux [] (tl liste) (hd liste)
  17. in ( let truc2 = mini_aux [] (tl (fst truc)) (hd (fst truc))
  18. in (fst truc2,(snd truc,snd truc2))));;
  19. let rec normalise liste =
  20. match liste with
  21. []->[]
  22. |(a,b)::l->((Feuille a),b)::(normalise l);;
  23. let rec arbreuh liste =
  24. match liste with
  25. [a,b]->a
  26. |_->(let resu = (double_min liste) in (
  27. match resu with
  28. (a,((b,c),(d,e))) -> arbreuh (((Noeud (b,d)),(c+e))::a)
  29.  ));;
  30. let rec encodage texte table_codage =
  31. match texte with
  32. ""->[]
  33. |_->(assq texte.[0] table_codage)@(encodage (sub_string texte 1 ((string_length texte)-1)) table_codage);;
  34. let rec codage bitprec tree =
  35. match tree with
  36. (Feuille a)-> [(a,(rev bitprec))]     
  37. |Noeud (a,b)-> (codage (0::bitprec) a)   @   (codage (1::bitprec)  b);;
  38. let compresse texte =
  39. let arbre_huffman = arbreuh (normalise (frequence texte []))
  40. in ( let table_compression = (codage [] (arbre_huffman)) in (
  41. (encodage texte table_compression),arbre_huffman));;
  42. let decompresse liste arbrini =
  43. let rec decode_aux liste tree =
  44. match liste,tree with
  45. [],(Feuille a)->[(char_for_read a)]
  46. |_,(Feuille a)->(char_for_read a)::(decode_aux liste arbrini)
  47. |x::l,(Noeud (a,b)) -> if x = 0 then (decode_aux l a) else (decode_aux l b)
  48. in ( concat (decode_aux liste arbrini));;


 
pour décompresser, copie la liste de bits et l'arbre en parametres

lordankou oui mais je trouve que avec un fort typage on a un algo bien propre et pour le récursif je sais pas ce que ça donne en c++
je sais que c super pratique en camL le récursif (j'adore  :love: ).
farib ben disons que les algos sous caml et c++ c pas tellemtn al meême maniere caml eet archi type et récursif
lordankou je voulais faire le jeu de la vie en l'adaptant un peu pour le mettre en 3d et avec un système d'évolution. je vais faire ça en c++ et en opengl mais bon préfère trouver l'algo d'abord en caml et ensuite traduire tout ça en c++ avec de l'opengl.  
 
en ce qui concerne le vect_assign le plus con c que j'avais bien utilisé le <- au lieu de = une dizaine de ligne au dessus dans une autre fonctoin  :sarcastic:  
 
ah là là que d'erreur. bon là j'y suis presque j'ai juste une erreur :  
#Uncaught exception: Invalid_argument "vect_item"
 
mais bon ça je pense savoir d'ou ça vient. étant donné que je fais tout le tour de la matrice et que je dois regarder l'état de tous les cellules adjacentes j'ai du mettre un + au lieu d'un moins quelques parts. bref verrait ça demain car là fatigué !!!
 
je mes tjrs le code de ce que j'ai fais pour l'instant (si ça peut intéresser quelqu'un  :lol:  :lol: ) :  

Code :
  1. #open "graphics";;
  2. open_graph "";;
  3. let init_matrice longueur_matrice nombre =
  4.   let matrice = make_matrix longueur_matrice longueur_matrice 1 in
  5.    for compteur = 0 to (longueur_matrice-1) do
  6.     for compteur2 = 0 to (longueur_matrice-1) do
  7.      matrice.(compteur).(compteur2) <-(random__int nombre)
  8.     done ;
  9.    done ;
  10. matrice ;;
  11. let dessiner_matrice x_depart y_depart matrice rayon_cellule=
  12. for compteur = 0 to (vect_length matrice-1) do
  13.   for compteur2 = 0 to (vect_length matrice.(compteur)-1) do
  14.     match matrice.(compteur).(compteur2) with
  15.      |1 -> set_color black ; fill_circle (x_depart+rayon_cellule*compteur*2) (x_depart+rayon_cellule*compteur2*2) rayon_cellule
  16.      |_ -> set_color white ; fill_circle (x_depart+rayon_cellule*compteur*2) (x_depart+rayon_cellule*compteur2*2) rayon_cellule         
  17.   done ;
  18. done ;
  19. ;;
  20. let comparaison matrice nombre i j =
  21.   match (nombre) with
  22.      |2 -> if (matrice.(i).(j)=1) then 1 else 0
  23.      |3 -> if (matrice.(i).(j)=0) then 1 else 1
  24.      |_ -> 0;;
  25. let successeur_matrice matrice =
  26.   let matrice_suivante = make_matrix (vect_length matrice) (vect_length matrice) 1 in
  27.     matrice_suivante.(0).(0) <- comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 0 ;
  28.     matrice_suivante.(vect_length matrice-1).(0) <- comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) (vect_length matrice-1) 0 ;
  29.     matrice_suivante.(0).(vect_length matrice-1) <- comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 (vect_length matrice-1) ;
  30.     matrice_suivante.(vect_length matrice-1).(vect_length matrice-1) <- comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) (vect_length matrice-1) (vect_length matrice-1) ;
  31.     for compteur = 1 to (vect_length matrice-2) do
  32.       for compteur2 = 1 to (vect_length matrice.(compteur)-2) do
  33.         match (matrice.(compteur-1).(compteur2-1)+matrice.(compteur-1).(compteur2)+matrice.(compteur-1).(compteur2+1)+matrice.(compteur).(compteur2-1)+matrice.(compteur).(compteur2+1)+matrice.(compteur+1).(compteur2-1)+matrice.(compteur+1).(compteur2)+matrice.(compteur+1).(compteur2+1)) with
  34.          |2 -> if (matrice.(compteur).(compteur2)=1) then matrice_suivante.(compteur).(compteur2) <- 1 else matrice_suivante.(compteur).(compteur2) <- 0
  35.          |3 -> matrice_suivante.(compteur).(compteur2) <- 1 
  36.          |_ -> matrice_suivante.(compteur).(compteur2) <- 0         
  37.       done ;
  38.     done ;
  39.     for compteur = 1 to (vect_length matrice) do
  40.       match (matrice.(compteur-1).(0)+matrice.(compteur-1).(1)+matrice.(compteur).(1)+matrice.(compteur+1).(1)+matrice.(compteur+1).(0)) with
  41.         |2 -> if (matrice.(compteur).(0)=1) then matrice_suivante.(compteur).(0) <- 1 else matrice_suivante.(compteur).(0) <- 0
  42.         |3 -> matrice_suivante.(compteur).(0) <- 1 
  43.         |_ -> matrice_suivante.(compteur).(0) <- 0
  44.     done ;
  45.     for compteur = 1 to (vect_length matrice) do
  46.       match (matrice.(0).(compteur-1)+matrice.(1).(compteur-1)+matrice.(1).(compteur)+matrice.(1).(compteur+1)+matrice.(0).(compteur+1)) with
  47.         |2 -> if (matrice.(0).(compteur)=1) then matrice_suivante.(0).(compteur) <- 1 else matrice_suivante.(0).(compteur) <- 0
  48.         |3 -> matrice_suivante.(0).(compteur) <- 1 
  49.         |_ -> matrice_suivante.(0).(compteur) <- 0
  50.     done ;
  51.     for compteur = 1 to (vect_length matrice) do
  52.       match (matrice.(compteur-1).(vect_length matrice)+matrice.(compteur-1).(vect_length matrice-1)+matrice.(compteur).(vect_length matrice-1)+matrice.(compteur+1).(vect_length matrice-1)+matrice.(compteur+1).(vect_length matrice)) with
  53.         |2 -> if (matrice.(compteur).(vect_length matrice)=1) then matrice_suivante.(compteur).(vect_length matrice) <- 1 else matrice_suivante.(compteur).(vect_length matrice) <- 0
  54.         |3 -> matrice_suivante.(compteur).(vect_length matrice) <- 1 
  55.         |_ -> matrice_suivante.(compteur).(vect_length matrice) <- 0
  56.     done ;
  57.     for compteur = 1 to (vect_length matrice) do
  58.       match (matrice.(vect_length matrice).(compteur-1)+matrice.(vect_length matrice-1).(compteur-1)+matrice.(vect_length matrice-1).(compteur)+matrice.(vect_length matrice-1).(compteur+1)+matrice.(vect_length matrice).(compteur+1)) with
  59.         |2 -> if (matrice.(vect_length matrice).(compteur)=1) then matrice_suivante.(vect_length matrice).(compteur) <- 1 else matrice_suivante.(vect_length matrice).(compteur) <- 0
  60.         |3 -> matrice_suivante.(vect_length matrice).(compteur) <- 1 
  61.         |_ -> matrice_suivante.(vect_length matrice).(compteur) <- 0
  62.     done ;
  63. matrice_suivante;;
  64. let rec boucle matrice x_depart y_depart rayon_cellule =
  65.   dessiner_matrice x_depart y_depart matrice rayon_cellule ;
  66.   for compteur = 0 to 600000 do
  67.   ();
  68.   done ;
  69.   boucle (successeur_matrice matrice) x_depart y_depart rayon_cellule ;;
  70. let fonction_de_test longueur_matrice nombre x_depart y_depart rayon_cellule =
  71. let matrice = (init_matrice longueur_matrice nombre) in
  72. boucle matrice x_depart y_depart rayon_cellule ;;
  73. clear_graph();;
  74. fonction_de_test 20 13 100 100 10 ;;


 
BONNE NUIT !

farib ben moi ca faisait un an que j'en avais pas fait, et j'ai retrouvé la syntaxe rien que pour toi ! en gros g bossé a ta place !
 
(dans quel cadre tu t'y es remis ?)
lordankou bah euh disons que ça fait plutôt un an que j'en ai pas fait et bon je me suis remis à ça y'a deux jours donc faut que je me réhabitue avec la syntaxe !  :ange:
farib j'ai corrigé l'algo d'avant (morceaux en gras) (y'a un bug  ave le forum, verifie caractere par caractere)
 

Code :
  1. let successeur_matrice matrice =
  2.     let matrice_suivante = (make_matrix (vect_length matrice) (vect_length matrice) 1) in (
  3.       matrice_suivante.(0).(0)<- (comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 0) ; 
  4.       matrice_suivante.(0).((vect_length matrice) - 1) <- (comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 (vect_length matrice-1));
  5. ); matrice_suivante ;;

farib ca fait pas longtemps que tu fais tu caml
pour assigner a un vecteur on fait comme ca
 
vecteur.(indice)<-valeur
 
no comment
lordankou je comprends pas justement pourquoi  

Code :
  1. (matrice_suivante.(0).(0)) = (comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 0)


est un bool  
car je veux mettre dans matrice_suivante.(0).(0) le résultat de "comparasion" qui est un int donc logiquement ça devrait être un int l'expression ci dessus.
idem pour  
matrice_suivante.(vect_length matrice-1).(0)
matrice_suivante.(0).(vect_length matrice-1)
matrice_suivante.(vect_length matrice-1).(vect_length matrice-1)
 
bref la fonction est :

Code :
  1. let successeur_matrice matrice =
  2.   let matrice_suivante = make_matrix (vect_length matrice) (vect_length matrice) 1 in
  3.     matrice_suivante.(0).(0) = comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 0 ;
  4.     matrice_suivante.(vect_length matrice-1).(0) = comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) (vect_length matrice-1) 0 ;
  5.     matrice_suivante.(0).(vect_length matrice-1) = comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 (vect_length matrice-1) ;
  6.     matrice_suivante.(vect_length matrice-1).(vect_length matrice-1) = comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) (vect_length matrice-1) (vect_length matrice-1) ;
  7.     for compteur = 1 to (vect_length matrice-2) do
  8.       for compteur2 = 1 to (vect_length matrice.(compteur)-2) do
  9.         match (matrice.(compteur-1).(compteur2-1)+matrice.(compteur-1).(compteur2)+matrice.(compteur-1).(compteur2+1)+matrice.(compteur).(compteur2-1)+matrice.(compteur).(compteur2+1)+matrice.(compteur+1).(compteur2-1)+matrice.(compteur+1).(compteur2)+matrice.(compteur+1).(compteur2+1)) with
  10.          |2 -> if (matrice.(compteur).(compteur2)=1) then matrice_suivante.(compteur).(compteur2)=1 else matrice_suivante.(compteur).(compteur2)=1
  11.          |3 -> if (matrice.(compteur).(compteur2)=0) then matrice_suivante.(compteur).(compteur2)=1 else matrice_suivante.(compteur).(compteur2)=1
  12.          |_ -> if (matrice.(compteur).(compteur2)=1) then matrice_suivante.(compteur).(compteur2)=0 else matrice_suivante.(compteur).(compteur2)=0         
  13.       done ;
  14.     done ;;


 
et doit donner la matrice successive de la matrice donné en entrée suivant les règles du jeux de la vie.

farib (au passage cmlc c génial pr le récursif... g fait un algo de huffman  récursif, c t trop court en terme de code... en 5-6lignes tu fais des algos trop piussants)
 
alors ton pb il est simple

Code :
  1. (matrice_suivante.(0).(0)) = (comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 0)


 
c'est un bool....
 
or tu le fais suivre d'un ";", il ne faut pas car l'expression a un type caml ne sait pas ce qu'il faut en faire ... il essaye de le faire passer sans type
 
 

Code :
  1. (matrice_suivante.(0).(vect_length matrice-1)) = (comparaison matrice matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 (vect_length matrice-1))


 
ca aussi c un bool, mais comme derriere il y a un ;; c'est normal, c'est la valeur qu'il doit renvoyer
 
je sias  pas quel est ton algo pour corriger

lordankou bon j'ai simplifié :
 

Code :
  1. let comparaison matrice nombre i j =
  2.   match (nombre) with
  3.      |0 -> if (matrice.(i).(j)=1) then 0 else 1
  4.      |1 -> if (matrice.(i).(j)=1) then 0 else 1
  5.      |2 -> if (matrice.(i).(j)=1) then 1 else 1
  6.      |3 -> if (matrice.(i).(j)=0) then 1 else 0
  7.      |_ -> if (matrice.(i).(j)=0) then 1 else 0;;
  8. comparaison : int vect vect -> int -> int -> int -> int = <fun>


 
ensuite je l'utilise :

Code :
  1. let successeur_matrice matrice =
  2.   let matrice_suivante = make_matrix (vect_length matrice) (vect_length matrice) 1 in
  3.     (matrice_suivante.(0).(0)) = (comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 0) ;
  4.     (matrice_suivante.(0).(vect_length matrice-1)) = (comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 (vect_length matrice-1)) ;;
  5. #Toplevel input:
  6. >    (matrice_suivante.(0).(0)) = (comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 0) ;
  7. >    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  8. Warning: this expression has type bool,
  9. but is used with type unit.


 
 alors que quand j'utilise comme ça :

Code :
  1. let successeur_matrice matrice =
  2.   let matrice_suivante = make_matrix (vect_length matrice) (vect_length matrice) 1 in
  3.     (matrice_suivante.(0).(0)) = (comparaison matrice (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 0) ;;
  4. successeur_matrice : int vect vect -> bool = <fun>


ça marche très bien.
 
or il faut que j'utilise plusieurs fois "comparaison"

farib malheursement g abandonné la prépa et caml avec masi
 
 
ce serati pas une mauvaise portée de variable avec
 
let matrice_suivante = make_matrix (vect_length matrice) (vect_length matrice) 1 in  
                                                                                                               ^^
lordankou bon voila le code :
 
 
let comparaison matrice matrice_suivante nombre i j =
  match nombre with
     |0 -> if (matrice.(i).(j)=1) then matrice_suivante.(i).(j)=0 else matrice_suivante.(i).(j)=1
     |1 -> if (matrice.(i).(j)=1) then matrice_suivante.(i).(j)=0 else matrice_suivante.(i).(j)=1
     |2 -> if (matrice.(i).(j)=1) then matrice_suivante.(i).(j)=1 else matrice_suivante.(i).(j)=1  
     |3 -> if (matrice.(i).(j)=0) then matrice_suivante.(i).(j)=1 else matrice_suivante.(i).(j)=0
     |_ -> if (matrice.(i).(j)=0) then matrice_suivante.(i).(j)=1 else matrice_suivante.(i).(j)=0;;
 
let successeur_matrice matrice =
  let matrice_suivante = make_matrix (vect_length matrice) (vect_length matrice) 1 in
    comparaison matrice matrice_suivante (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 0 ;
    comparaison matrice matrice_suivante (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) (vect_length matrice-1) 0 ;
    comparaison matrice matrice_suivante (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 (vect_length matrice-1) ;
    comparaison matrice matrice_suivante (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) (vect_length matrice-1) (vect_length matrice-1) ;
    for compteur = 1 to (vect_length matrice-2) do
      for compteur2 = 1 to (vect_length matrice.(compteur)-2) do
        match (matrice.(compteur-1).(compteur2-1)+matrice.(compteur-1).(compteur2)+matrice.(compteur-1).(compteur2+1)+matrice.(compteur).(compteur2-1)+matrice.(compteur).(compteur2+1)+matrice.(compteur+1).(compteur2-1)+matrice.(compteur+1).(compteur2)+matrice.(compteur+1).(compteur2+1)) with
         |2 -> if (matrice.(compteur).(compteur2)=1) then matrice_suivante.(compteur).(compteur2)=1 else matrice_suivante.(compteur).(compteur2)=1
         |3 -> if (matrice.(compteur).(compteur2)=0) then matrice_suivante.(compteur).(compteur2)=1 else matrice_suivante.(compteur).(compteur2)=1  
         |_ -> if (matrice.(compteur).(compteur2)=1) then matrice_suivante.(compteur).(compteur2)=0 else matrice_suivante.(compteur).(compteur2)=0          
      done ;
    done ;  
matrice = matrice_suivante ;;
 
et j'obtiens comme erreur :  
 
Toplevel input:
>    comparaison matrice matrice_suivante (matrice.(1).(0)+matrice.(1).(1)+matrice.(0).(1)) 0 0 ;
>    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Warning: this expression has type bool,
but is used with type unit.
 
 
et franchement là je comprends pas. c pas de type bool pourtant.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)