Pages : 1
#1 Le 28/05/2007, à 10:17
- reaver
plus petit élément --> Caml
Bonjour,
je sollicite votre aide sur une question en langage Caml.
Il s'agit de trouver le plus petit point de coordonnées (x;y) dans l'ordre lexicographique. Je ne comprend pas le programme qui répond à cette question.
---------------------------------------
let rec ppé (<) lst =
match lst with
|[a] -> a,[]
|t::q -> let pq, rq = ppé (<) q in
if t<pq then t,q
else pq,t::rq
---------------------------------------
je ne comprend vraiment rien à ce programme!
Je vous remercie d'avance pour votre aide
Hors ligne
#2 Le 28/05/2007, à 10:40
- Babaôrom
Re : plus petit élément --> Caml
Fonction recursive avec 2 parametres de sortie (un element et une liste):
deux possibilites
- soit ta liste ne contient qu'un element, c'est donc le plus petit, tu renvoie donc a (plus petit element) et [] (liste vide)
- soit il y a plusieurs elements dans ce cas tu separe t premier element de q la queue de ta liste.
tu declares pq le plus petit element de q la queue de ta liste et rq le reste de ta liste. Si t est plus petit que le plus petit de q c'est a dire pq, tu renvoie t et q
sinon tu renvoie pq et t::rq c'est a dire la liste composee de tout lst moins pq
En fait ta fonction renvoie d'un cote le plus petit element et de l'autre la liste de depart dont on a enleve ce plus petit element.
Je crois ne pas me tromper mais ca fait plus de 4 ans que je n'ai pas touche a du Caml...
Hors ligne
#3 Le 28/05/2007, à 12:01
- reaver
Re : plus petit élément --> Caml
Donc ici en fait le rq ne sert à rien ?
Hors ligne
#4 Le 28/05/2007, à 19:22
- Yannick_LM
Re : plus petit élément --> Caml
Le mieux, c'est de prendre un papier et un stylo, un exemple, et de noter étape par étape ce qui se passe, calmement.
Ou alors d'utiliser un trace.
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
Pages : 1