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

  FORUM HardWare.fr
  Programmation

  problème en camL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème en camL

n°185642
lordankou
Posté le 29-07-2002 à 23:27:01  profilanswer
 

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.


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

mood
Publicité
Posté le 29-07-2002 à 23:27:01  profilanswer
 

n°185661
farib
Posté le 30-07-2002 à 00:04:06  profilanswer
 

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
n°186381
lordankou
Posté le 30-07-2002 à 17:34:07  profilanswer
 

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"


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

n°186443
farib
Posté le 30-07-2002 à 18:21:14  profilanswer
 

(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

n°186470
lordankou
Posté le 30-07-2002 à 18:31:40  profilanswer
 

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.


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

n°186494
farib
Posté le 30-07-2002 à 18:52:17  profilanswer
 

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

n°186502
farib
Posté le 30-07-2002 à 19:30:34  profilanswer
 

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
n°186553
lordankou
Posté le 30-07-2002 à 21:22:47  profilanswer
 

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:


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

n°186566
farib
Posté le 30-07-2002 à 21:42:57  profilanswer
 

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

n°186609
lordankou
Posté le 30-07-2002 à 22:53:36  profilanswer
 

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 !


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

mood
Publicité
Posté le 30-07-2002 à 22:53:36  profilanswer
 

n°186648
farib
Posté le 30-07-2002 à 23:47:10  profilanswer
 

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

n°186761
lordankou
Posté le 31-07-2002 à 09:29:26  profilanswer
 

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


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

n°186802
farib
Posté le 31-07-2002 à 09:55:23  profilanswer
 

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
n°186879
lordankou
Posté le 31-07-2002 à 11:22:09  profilanswer
 

il sert à quoi l'algo de huffman ?


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

n°186932
farib
Posté le 31-07-2002 à 11:52:52  profilanswer
 

....

n°186942
LeGreg
Posté le 31-07-2002 à 11:55:08  profilanswer
 

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

n°196668
lordankou
Posté le 18-08-2002 à 23:05:53  profilanswer
 

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


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

n°196742
xav14
Posté le 19-08-2002 à 01:25:43  profilanswer
 

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)

n°196756
sire de Bo​tcor
Armorican way of life
Posté le 19-08-2002 à 07:40:55  profilanswer
 

tiens... un brestois !


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

  problème en camL

 

Sujets relatifs
Problème css style SELECTProblème d'identification de DLL
[PHP] Probleme pour faire passer des infos par l'url.[PHP] Probleme avec function
problème de compilationprobleme de permission ds une applet
[PHP] probleme avec la fonction mail[Flash 4_php] Problème de variable
Problème de débutantProbleme script d'upload d'image en la compressant
Plus de sujets relatifs à : problème en camL


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