Bonjour.
Je doit faire une fonction qui extrait les chaines croissantes d'une liste d'entiers (a partir d'une liste d'entiers on doit retourner une liste de listes constituée des entiers croissants de la premiere liste) :
Par exemple si on lui donne en entré la liste :
[1;2;3;4;2;3;4;6;7;1;8;9];;
Elle devra retourner:
[ [1;2;3;4] ; [2;3;4;6;7] ; [1;8;9] ];;
J'ai déjà écrit une fonction mais elle ne fait pas correctement ce que je veu car elle ne peut renvoyer que des sous liste de maximum deux entiers:
1 2 3 4 5 6
| let rec chaines_croissantes l=
match l with
|[]->[[]]
|[x]->[[x]]
|x::y::s->if(x>y) then ([x]::chaines_croissantes (y::s))
else ([x;y]::chaines_croissantes s);; |
Le problème est apparemment ici
else ([x;y]::chaines_croissantes s);;
Mais je ne voit pas comment faire pour résoudre le problème merci d'éclairer ma lanterne.
PS: Sinon j'avais réussi à modifier cette fonction pour isoler la première chaine croissante de la liste donc logiquement il ne me reste plus qu'a faire une fonction récursive qui va rassembler tout cela MAIS je ne sait pas comment former une liste de liste avec des listes: étant donné qu'on ne peut pas faire sa :
Partager