module Cdst: sig end
Pages engendrées avec l'outil ocamldoc
Exo. I
|
val pi : float
val cart_of_pol : float -> float -> float * float
(cart_of_pol d t)
renvoie les coordonnées cartésiennes
corespondant aux coordonnées polaires d'angle t
et de
mesure d
.Cdst.cart_of_pol
val spirale : unit -> unit
spirale()
écrit sur la sortie standard les coordonnées
cartésiennes des points d'une spirale d'Archimède donnés
par la suite de coordonnées polaire d'angle variant de 0 à
13pi
/2 avaec un pas de pi
/60val spirale_a : unit -> unit
for
Exo. II
|
val add_elt : 'a -> 'a list -> 'a list
(add_elt e s)
ajoute l'élément e
à la liste s
s'il n'y figure pas déjà.add_elt
let s = (add_elt 1 []);;
let s = (add_elt 1 s);;
let s = (add_elt 2 s);;
let s = (add_elt 3 s);;
let s = (add_elt 3 s);;
let s = (add_elt 2 s);;
let s = (add_elt 1 s);;
val add_elt_a : 'a -> 'a list -> 'a list
List.mem
val set_of_list : 'a list -> 'a list
set_of_list xs
renvoie l'ensemble (i.e. liste sans redondance)
des éléments de xs
set_of_list
let s = (set_of_list []);;
let s = (set_of_list [1;2;3]);;
let s = (set_of_list [1;1;2;3]);;
let s = (set_of_list [1;2;3;1]);;
let s = (set_of_list [1;2;2;3]);;
let s = (set_of_list [1;2;3;2]);;
let s = (set_of_list [3;1;2;3]);;
let s = (set_of_list [1;3;2;3]);;
val set_of_list_a : 'a list -> 'a list
Cdst.add_elt
(Quest II.1)val set_of_list_b : 'a list -> 'a list
val set_of_list_c : 'a list -> 'a list
List.fold_left
val union : 'a list -> 'a list -> 'a list
(union s1 s2)
revoie l'union des ensembles s1
et s2
union
(union [] [])
(union [] [1;2;3])
(union [1;2;3] [])
(union [1;2;3] [1;2;3])
(union [1;2;3] [2;4;6])
(union [1;3;5] [2;4;6])
val union_a : 'a list -> 'a list -> 'a list
s2
comme
accumaulatuerval union_b : 'a list -> 'a list -> 'a list
List.fold_left
val inter : 'a list -> 'a list -> 'a list
(inter s1 s2)
renvoie l'intersection des ensembles s1
et s2
inter
(inter [] [])
(inter [] [1;2;3])
(inter [1;2;3] [])
(inter [1;2;3] [1;2;3])
(inter [1;2;3] [2;4;6])
(inter [1;3;5] [2;4;6])
val inter_a : 'a list -> 'a list -> 'a list
val inter_b : 'a list -> 'a list -> 'a list
if
.val inter_c : 'a list -> 'a list -> 'a list
List.filtre
:
les éléments de s1
inter s2
sont les élements
de s1
qui sont aussi dans s2
.
Exo. III
|
type bin_seq1 = bool list
type bin_seq2 = bool array
val nb_occ_elt1 : 'a -> 'a list -> int
(nb_occ_elt1 e s)
renvoie le nombre d'occurrences de e
dans
la suite binaire s
.nb_occ_elt1
(nb_occ_elt1 1 [])
(nb_occ_elt1 1 [1])
(nb_occ_elt1 1 [1;1])
(nb_occ_elt1 1 [1;2;1])
(nb_occ_elt1 1 [2;3;4])
(nb_occ_elt1 1 [1;2;3;4])
(nb_occ_elt1 1 [2;3;4;1])
val nb_occ_elt1_a : 'a -> 'a list -> int
if
.val nb_occ_elt1_b : 'a -> 'a list -> int
List.fold_left
.val nb_occ_elt1_c : 'a -> 'a list -> int
List.iter
ainsi qu'une référence locale.val nb_occ_elt2 : 'a -> 'a array -> int
(nb_occ_elt2 e s)
renvoie le nombre d'occurrences de e
dans
la suite binaire s
.val nb_occ_elt2_a : 'a -> 'a array -> int
Array.iter
.val alt_seq1 : 'a list -> bool
(alt_seq1 s)
renvoie true
si et seulement si s
est une suite binaire alternée.alt_seq1
(alt_seq1 [])
(alt_seq1 [0])
(alt_seq1 [1])
(alt_seq1 [0;1])
(alt_seq1 [1;0])
(alt_seq1 [0;1;0])
(alt_seq1 [1;0;1])
(alt_seq1 [0;1;0;1])
(alt_seq1 [1;0;1;0])
(alt_seq1 [0;1;0;0])
(alt_seq1 [1;0;0;1])
Codage avec des tableaux (2)
val alt_seq2 : 'a array -> bool
(alt_seq2 s)
renvoie true
si et seulement si s
est une suite binaire alternée.val alt_seq2_b : 'a array -> bool
while
: la fonction
retourne false
dès que la suite n'est plus alternée.
Commentaire: solution préférable ici.
val nb_sub_hom1 : 'a -> 'a list -> int
(nb_sub_hom1 e s )
renvoie le nombre de sous-suites e
-homogènes
de s
.
Algorithme: on explore (quand c'est possible) les éléments
deux par deux, on compte +1
lorsque l'on "sort" d'une
(sous)suite de e
.
nb_sub_hom1
(nb_sub_hom1 1 [])
(nb_sub_hom1 1 [1])
(nb_sub_hom1 1 [1;1])
(nb_sub_hom1 1 [1;1;1])
(nb_sub_hom1 1 [1;0])
(nb_sub_hom1 1 [1;1;0])
(nb_sub_hom1 1 [1;1;1;0])
(nb_sub_hom1 1 [0;1])
(nb_sub_hom1 1 [0;1;1])
(nb_sub_hom1 1 [0;1;1;1])
(nb_sub_hom1 1 [1;0;1])
(nb_sub_hom1 1 [1;1;0;1])
(nb_sub_hom1 1 [0;1;0])
(nb_sub_hom1 1 [0;1;1;0])
(nb_sub_hom1 1 [0;1;1;0;1])
val nb_sub_hom1_a : 'a -> 'a list -> int
val nb_sub_hom1_b : 'a -> 'a list -> int
val nb_sub_hom1_c : 'a -> 'a list -> int
if
unilatère.val nb_sub_hom1_d : 'a -> 'a list -> int
e
ou non).val nb_sub_hom1_e : 'a -> 'a list -> int
val nb_sub_hom1_f : 'a -> 'a list -> int
e
et un second pour les éléments égaux à e
.
Utilise des définitions (locales) mutuellement récursives.
val nb_sub_hom2 : 'a -> 'a array -> int
(nb_sub_hom2 e s)
renvoie le nombre de sous-suites e
-homogènes
de s
.val nb_sub_hom2_a : 'a -> 'a array -> int
while
.val max_sub_hom1 : 'a -> 'a list -> int
(max_sub_hom1 e s)
renvoie la longueur de la plus longue sous-suite
e
-homogène de s
.max_sub_hom1
analogue à nb_sub_hom1
val max_sub_hom2 : 'a -> 'a array -> int
(max_sub_hom2 e s)
renvoie la longueur de la plus longue sous-suite
e
-homogène de s
.