problème en camL

problème en camL - Programmation

Marsh Posté le 29-07-2002 à 23:27:01    

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.


---------------

Reply

Marsh Posté le 29-07-2002 à 23:27:01   

Reply

Marsh Posté le 30-07-2002 à 00:04:06    

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  
                                                                                                               ^^


Message édité par farib le 30-07-2002 à 00:05:01
Reply

Marsh Posté le 30-07-2002 à 17:34:07    

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"


---------------

Reply

Marsh Posté le 30-07-2002 à 18:21:14    

(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

Reply

Marsh Posté le 30-07-2002 à 18:31:40    

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.


---------------

Reply

Marsh Posté le 30-07-2002 à 18:52:17    

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

Reply

Marsh Posté le 30-07-2002 à 19:30:34    

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 ;;


Message édité par farib le 30-07-2002 à 19:33:09
Reply

Marsh Posté le 30-07-2002 à 21:22:47    

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:


---------------

Reply

Marsh Posté le 30-07-2002 à 21:42:57    

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 ?)

Reply

Marsh Posté le 30-07-2002 à 22:53:36    

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 !


---------------

Reply

Marsh Posté le 30-07-2002 à 22:53:36   

Reply

Marsh Posté le 30-07-2002 à 23:47:10    

ben disons que les algos sous caml et c++ c pas tellemtn al meême maniere caml eet archi type et récursif

Reply

Marsh Posté le 31-07-2002 à 09:29:26    

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: ).


---------------

Reply

Marsh Posté le 31-07-2002 à 09:55:23    

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


Message édité par farib le 31-07-2002 à 09:56:08
Reply

Marsh Posté le 31-07-2002 à 11:22:09    

il sert à quoi l'algo de huffman ?


---------------

Reply

Marsh Posté le 31-07-2002 à 11:52:52    

....

Reply

Marsh Posté le 31-07-2002 à 11:55:08    

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

Reply

Marsh Posté le 18-08-2002 à 23:05:53    

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 ;;


---------------

Reply

Marsh Posté le 19-08-2002 à 01:25:43    

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)

Reply

Marsh Posté le 19-08-2002 à 07:40:55    

tiens... un brestois !

Reply

Sujets relatifs:

Leave a Replay

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