j'ai un putain de projet a faire en Caml et j'y comprends rien. je recherche quelquun qui puisse m'aider. voila le sujet:
1) Ecrire en Caml la fonction algoRec qui prend les 4 paramètres suivants :
a) une fonction scinder : P ->p(P) qui scinde un problème en une liste de sous problèmes, b) une fonction estTrivial : P -> B qui retourne true si un problème est trivial ou false sinon, c) une fonction solutionTrivial : P -> S qui retourne la solution à un problème trivial et d) une fonction elaborerSolution : P->p(S) -> S qui retourne la solution d'un problème en fonction de ce problème et des solutions de ses sous problèmes.
Cette fonction algoRec retourne un élément de P -> S qui est une fonction récursive pour résoudre tout problème de P.
2) En utilisant la fonction algoRec précédente, écrire en Caml la fonction factorielle : N -> N qui retourne la factorielle d'un entier donné en paramètre.
3) En utilisant la fonction algoRec, écrire en Caml la fonction arrangements (E)*N ->p(p(E)) qui calcule les arrangements à p éléments de tout sous ensemble fini de E. Pour simplifier, on supposera que le type Caml de E est 'a list. Ainsi, le type Caml de la fonction arrangements sera 'a list * int -> 'a list list.
Le nombre d'arrangements à p éléments parmi n est Anp soit n!/(n-p)! pour n>p, 0 sinon. Par exemple arrangements [1;3;9] 2 retourne [ [3;9]; [9;3]; [1;9]; [9;1]; [1;3]; [3;1] ].
Marsh Posté le 26-08-2004 à 17:53:13
j'ai un putain de projet a faire en Caml et j'y comprends rien. je recherche quelquun qui puisse m'aider. voila le sujet:
(E)*N ->p(p(E)) qui calcule les arrangements à p éléments de tout sous ensemble fini de E.
1) Ecrire en Caml la fonction algoRec qui prend les 4 paramètres suivants :
a) une fonction scinder : P ->p(P) qui scinde un problème en une liste de sous problèmes,
b) une fonction estTrivial : P -> B qui retourne true si un problème est trivial ou false sinon,
c) une fonction solutionTrivial : P -> S qui retourne la solution à un problème trivial et
d) une fonction elaborerSolution : P->p(S) -> S qui retourne la solution d'un problème en fonction de ce problème et des solutions de ses sous problèmes.
Cette fonction algoRec retourne un élément de P -> S qui est une fonction récursive pour résoudre tout problème de P.
2) En utilisant la fonction algoRec précédente, écrire en Caml la fonction factorielle : N -> N qui retourne la factorielle d'un entier donné en paramètre.
3) En utilisant la fonction algoRec, écrire en Caml la fonction arrangements
Pour simplifier, on supposera que le type Caml de E est 'a list. Ainsi, le type Caml de la fonction
arrangements sera 'a list * int -> 'a list list.
Le nombre d'arrangements à p éléments parmi n est Anp soit n!/(n-p)! pour n>p, 0 sinon.
Par exemple arrangements [1;3;9] 2 retourne [ [3;9]; [9;3]; [1;9]; [9;1]; [1;3]; [3;1] ].