OCAML Tri par selection du minimum
Discutez d'informatique ici !
par Gregoirdedu89 » 24 Mar 2014, 17:25
Bonjour, je souhaite créer une fonction selectionne : ('a -> 'a -> bool) -> 'a list -> 'a.
(selectionne inf 1) calcule le minimum de la liste 1 par rapport à la fonction de comparaison inf (passée en paramètre).
Par exemple, (selectionne (<=) ['b' ; 'a' ; 'd' ; 'c']) retourne le caractère 'a', et (selectionne (>) [2 ; 1 ; 4 ; 3] retourne l'entier 4.
Voila donc j'ai essayé plusieurs méthodes tels deux fonctions réunis
insere_comparaison et tri_insertion mais ça ne retourne pas les types que je souhaite...
-
Monsieur23
- Habitué(e)
- Messages: 3966
- Enregistré le: 01 Oct 2006, 19:24
par Monsieur23 » 24 Mar 2014, 17:41
Aloha,
Tu peux définir une fonction auxiliaire Foo de type (a -> a -> Bool) -> a list -> a -> a qui prend en plus de ta fonction un objet X de type a, et qui renvoie le plus grand objet de la liste qui soit plus grand que X. La partie principale du code serait
Foo f (u::L) X = si (f u X) alors (Foo f L u) sinon (Foo f L X).
Tu n'as plus qu'à définir ta fonction comme (Foo f L (L.hd)).
« Je ne suis pas un numéro, je suis un homme libre ! »
-
Doraki
- Habitué(e)
- Messages: 5021
- Enregistré le: 20 Aoû 2008, 13:07
par Doraki » 25 Mar 2014, 19:09
t'es supposé avoir quoi quand tu demandes selectionne (<=) [] ?
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité