Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (* PROJET Heeder Mathieu, Herzhaft Enzo *)
- type 'a ensemble =
- |Ve
- |Ce of 'a * 'a ensemble
- ;;
- (========================cardinale ===========================)
- let rec cardinale (x:'a ensemble):int =
- match x with
- | Ve -> 0
- | Ce(t,suite) -> 1 + cardinale suite
- ;;
- cardinale (Ce(1,Ce(2,Ve)));;
- (========================apport ===========================)
- let rec apport (elm:'a) (x:'a ensemble):bool =
- match x with
- Ve -> false
- | Ce(e,suite) -> if elm = e then true
- else apport elm suite
- ;;
- apport 2 (Ce(1,Ce(2,Ve)));;
- apport 10 (Ce(1,Ce(2,Ve)));;
- (=========================inclusion ==========================)
- let rec inclusion (x:'a ensemble) (y:'a ensemble) :bool=
- match x with
- Ve -> true
- | Ce(e,suite) -> apport e y && inclusion suite y
- ;;
- inclusion (Ce(1,Ce(2,Ve))) (Ce(1,Ce(2,Ve)));; (true)
- inclusion (Ce(1,Ce(3,Ve))) (Ce(1,Ce(2,Ve)));; (false)
- (=========================ajout ==========================)
- let ajout (elm:'a) (x:'a ensemble):'a ensemble=
- if apport elm x then x
- else Ce(elm,x)
- ;;
- ajout 7 (Ce(1,Ce(2,Ve)));;
- ajout 1 (Ce(1,Ce(2,Ve)));;
- (=========================suppr ==========================)
- let rec suppr (elm:'a) (x:'a ensemble) :'a ensemble=
- match x with
- Ve -> Ve
- | Ce(e,suite) -> if elm = e then suppr elm suite
- else Ce(e,suppr elm suite)
- ;;
- suppr 7 (Ce(1,Ce(2,Ve)));;
- suppr 1 (Ce(1,Ce(2,Ve)));;
- (=========================ega ==========================)
- let ega (x:'a ensemble) (y:'a ensemble) :bool=
- if (cardinale x) = (cardinale y) then inclusion x y
- else false
- ;;
- ega (Ce(1,Ce(2,Ve))) (Ce(1,Ce(2,Ve)));;
- ega (Ce(1,Ce(2,Ve))) (Ce(1,Ce(3,Ve)));;
- ega (Ce(2,Ve)) (Ce(1,Ce(3,Ve)));;
- (=========================inter ==========================)
- let rec inter (x:'a ensemble) (y:'a ensemble) :'a ensemble=
- match x with
- Ve -> Ve
- | Ce(e,suite) -> if apport e y then Ce(e,inter suite y)
- else inter suite y
- ;;
- inter (Ce(1,Ce(2,Ve))) (Ce(2,Ce(3,Ve)));;
- (=========================diff ==========================)
- let rec diff (x:'a ensemble) (y:'a ensemble) :'a ensemble =
- match x with
- Ve -> Ve
- | Ce(e,suite) -> if apport e y then diff suite y
- else Ce(e, diff suite y)
- ;;
- diff (Ce(1,Ce(2,Ce(3,Ve)))) (Ce(3,Ve));;
- (=========================union ==========================)
- let rec union (x:'a ensemble) (y:'a ensemble):'a ensemble =
- match x with
- Ve -> y
- | Ce(e,suite) -> if apport e y then union suite y
- else union suite (ajout e y)
- ;;
- union (Ce(1,Ce(2,Ce(3,Ve)))) (Ce(4,Ce(5,Ce(6,Ve))));;
- (=========================diffsys ==========================)
- let rec diffsys (x:'a ensemble) (y:'a ensemble) :'a ensemble=
- match x with
- Ve -> y
- | Ce(e,suite) -> if apport e y then diffsys suite (suppr e y)
- else diffsys suite (ajout e y)
- ;;
- diffsys (Ce(1,Ce(2,Ce(3,Ve)))) (Ce(4,Ce(5,Ce(6,Ve))));;
- diffsys (Ce(1,Ce(2,Ce(3,Ve)))) (Ce(2,Ce(3,Ce(4,Ve))));;
- (* AVEC LISTE *)
- (========================cardinale ===========================)
- let rec cardinaleL x =
- match x with
- [] -> 0
- | e :: suite -> 1 + cardinaleL suite
- ;;
- cardinaleL [1;2;3;4;5;6;8];;
- (========================apport ===========================)
- let rec apportL elm x =
- match x with
- [] -> false
- | e :: suite -> if elm = e then true
- else apportL elm suite
- ;;
- apportL 2 [1;2;3;4;5;6;8];;
- apportL 10 [1;2;3;4;5;6;8];;
- (=========================inclusion ==========================)
- let rec inclusionL x y =
- match x with
- [] -> true
- | e :: suite -> apportL e y && inclusionL suite y
- ;;
- inclusionL [1;2;3;4;5;6] [1;2;3;4;5;6;8];; (true)
- inclusionL [1;2;3;4;5;7] [1;2;3;4;5;6;8];; (false)
- (=========================ajout ==========================)
- let ajoutL elm x =
- if apportL elm x then x
- else elm :: x
- ;;
- ajoutL 7 [1;2;3;4;5;6];;
- ajoutL 1 [1;2;3;4;5;6];;
- (=========================suppr ==========================)
- let rec supprL elm x =
- match x with
- [] -> []
- | e :: suite -> if elm = e then supprL elm suite
- else e :: supprL elm suite
- ;;
- supprL 7 [1;2;3;4;5;6];;
- supprL 1 [1;2;3;4;5;6];;
- (=========================ega ==========================)
- let egaL x y =
- if (cardinaleL x) = (cardinaleL y) then inclusionL x y
- else false
- ;;
- egaL [1;2;3;4;5;6] [1;2;3;4;5;6];;
- egaL [1;2;3;4;5] [1;2;3;4;5;6];;
- egaL [1;2;3;4;5;6] [1;2;3;4;5;7];;
- (=========================inter ==========================)
- let rec interL x y =
- match x with
- [] -> []
- | e :: suite -> if apportL e y then e :: interL suite y
- else interL suite y
- ;;
- interL [1;2;3;4;5;6] [8;7;3;9;5;10];;
- (=========================diff ==========================)
- let rec diffL x y =
- match x with
- [] -> []
- | e :: suite -> if apportL e y then diffL suite y
- else e :: diffL suite y
- ;;
- diffL [1;2;3;4;5;6] [8;7;3;9;5;10];;
- (=========================union ==========================)
- let unionL x y =
- diffL x y @ interL x y @ diffL y x
- ;;
- unionL [1;2;3;4;5;6] [8;7;3;9;5;10];;
- (=========================diffsys ==========================)
- let rec diffsysL x y =
- diffL x y @ diffL y x
- ;;
- diffsysL [1;2;3;4;5;6] [8;7;3;9;5;10];;
- (===========================================================)
- (* multiensemble *)
- (===========================================================)
- type 'a multiElement = 'a * int ;;
- type 'a multiEnsemble = 'a multiElement list;;
- let rec cardinaliteACU (y:'a multiEnsemble) (n:int) (b:int) :int*int=
- match y with
- [] -> (n,b)
- |(elm,i):: suite -> (cardinaliteACU suite (n+i) (b+1))
- ;;
- let rec cardinaliteME (x:'a multiEnsemble) : int*int =
- (cardinaliteACU x 0 0)
- ;;
- cardinaliteME [('a',3);('b',1);('z',5);('r',1)];;
- let rec occurenceME (x:'a multiEnsemble) (elem:'a) :int=
- match x with
- [] -> 0
- |(elm,i):: suite -> if(elm = elem) then i + (occurenceME suite elem)
- else (occurenceME suite elem)
- ;;
- occurenceME [('a',3);('b',1);('z',5);('r',1)] 'r' ;;
- occurenceME [('r',1);('a',3);('b',1);('z',5);('r',1)] 'r' ;;
- let rec appartenanceME (x:'a multiEnsemble) (elem:'a) :bool= (* ========================================================*)
- match x with
- [] -> false
- |(elm,i) :: suite ->if(elm = elem) then true
- else (appartenanceME suite elem)
- ;;
- appartenanceME [('a',3);('b',1);('z',5);('r',1)] 'r' ;;
- appartenanceME [('a',3);('b',1);('z',5);('r',1)] 'u' ;;
- let rec inclusionME (x:'a multiEnsemble) (y:'a multiEnsemble) :bool=
- match x with
- [] -> true
- |(elm,i) :: suite ->if(i <= occurenceME y elm)then inclusionME suite y
- else false
- ;;
- inclusionME [('a',3);('b',1);('z',5);('r',1)] [('a',3);('b',1);('z',5);('r',1)] ;;
- inclusionME [('a',3);('b',1);('z',5);('r',1)] [('a',3);('b',1);('z',5)] ;;
- inclusionME [('a',4);('b',1);('z',5);('r',1)] [('a',3);('b',1);('z',5);('r',1)] ;;
- let rec ajoutME (x:'a multiEnsemble) (multy: 'a multiElement) :'a multiEnsemble=
- let (elmi, ii) = multy in
- match x with
- [] -> multy :: []
- |(elm,i)::suite ->if(elm = elmi) then (elm,(i+ii)) :: suite
- else (elm,i)::(ajoutME suite multy)
- ;;
- ajoutME [('a',3);('b',1);('z',5);('r',1)] ('r',2) ;;
- ajoutME [('a',3);('b',1);('z',5);('r',1)] ('c',2) ;;
- let rec supprME (x:'a multiEnsemble) (multy: 'a multiElement) :'a multiEnsemble=
- let (elmi, ii) = multy in
- match x with
- [] -> []
- |(elm,i)::suite ->if(elm = elmi) then if(i-ii > 0)then (elm, (i-ii))::suite
- else suite
- else (elm,i)::(supprME suite multy)
- ;;
- supprME [('a',3);('b',1);('z',5);('r',1)] ('z',1) ;;
- supprME [('a',3);('b',1);('z',5);('r',1)] ('r',1) ;;
- supprME [('a',3);('b',1);('z',5);('r',1)] ('r',2) ;;
- supprME [('a',3);('b',1);('z',5);('r',1)] ('c',2) ;;
- let rec egalME (x:'a multiEnsemble) (y:'a multiEnsemble) :bool=
- match x with
- [] -> true
- |(elm,i)::suite -> (occurenceME x elm = occurenceME y elm) && (egalME suite y)
- ;;
- egalME [('a',3);('b',1);('z',5);('r',1)] [('a',3);('b',1);('z',5);('r',1)] ;;
- egalME [('a',3);('b',1);('z',5);('r',1)] [('a',3);('b',1);('z',5);('r',2)] ;;
- egalME [('a',3);('b',1);('z',2);('r',1)] [('a',3);('b',1);('z',5);('r',1)] ;;
- let rec interME (x:'a multiEnsemble) (y:'a multiEnsemble) :'a multiEnsemble = (by micky le génie)
- match x with
- [] -> []
- |(elm,i)::suite -> if(occurenceME y elm = 0)then interME suite y
- else if(i <= occurenceME y elm)then (elm,i)::interME suite y
- else (elm,(occurenceME y elm))::interME suite y
- ;;
- interME [('a',1);('b',1)] [('a',8);('b',8)] ;;
- interME [('a',1);('c',1)] [('a',8);('b',8)] ;;
- interME [('a',8);('c',1)] [('a',5);('b',8)] ;;
- let rec unionACU (x:'a multiEnsemble) (y:'a multiEnsemble) :'a multiEnsemble=
- match x with
- [] -> []
- |(elm,i)::suite -> if((occurenceME x elm) > (occurenceME y elm)) then (elm,i)::(unionACU suite y)
- else (unionACU suite y)
- ;;
- let rec egalUNI (x:'a multiEnsemble) (y:'a multiEnsemble) :'a multiEnsemble=
- match x with
- [] -> []
- |(elm,i)::suite -> if((occurenceME x elm) = (occurenceME y elm)) then (elm,i) :: (egalUNI suite y)
- else (egalUNI suite y)
- ;;
- let rec unionME (x:'a multiEnsemble) (y:'a multiEnsemble) :'a multiEnsemble=
- (unionACU x y) @ (unionACU y x) @ (egalUNI x y)
- ;;
- unionME [('a',1);('b',2)] [('c',8);('b',8)] ;;
- unionME [('a',1);('b',8)] [('c',8);('b',8)] ;;
- let rec diffME (x:'a multiEnsemble) (y:'a multiEnsemble) :'a multiEnsemble=
- match x with
- [] -> []
- |(elm,i)::suite -> if(occurenceME y elm = 0)then (elm,i)::diffME suite y
- else diffME suite y
- ;;
- diffME [('a',1);('b',1)] [('a',8);('b',8)] ;;
- diffME [('a',8);('c',1)] [('a',5);('b',8)] ;;
- let diffsysME (x:'a multiEnsemble) (y:'a multiEnsemble) :'a multiEnsemble=
- diffME x y @ diffME y x
- ;;
- diffsysME [('a',1);('b',1)] [('a',8);('b',8)] ;;
- diffsysME [('a',8);('c',1)] [('a',5);('b',8)] ;;
- (===============partitage 5 : bounus====================)
- type lettre = char;;
- type mot = lettre list;;
- type 'a ensembleListe = 'a list;;
- type dictionnaire = mot ensembleListe;;
- let cst_DICO :dictionnaire=
- [
- ['m';'i';'n';'i';'s';'t';'r';'e'] ;
- ['s';'e';'c';'h';'e'] ;
- ['m';'i';'c';'h';'e';'s'];
- ['f';'o';'u';'i';'l';'l';'e';'r']
- ];;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement