IF242 DS 29/04/2002 (Variant 2)

exercice 1
# type prog = Vide
        | Ecrire of prog
        | Lire of prog
        | Si of prog * prog * prog;;
type prog = Vide | Ecrire of prog | Lire of prog | Si of prog * prog * prog

exercice 2
# let rec lignes p = match p with
        | Vide -> 0
        | Lire p' -> 1 + lignes p'
        | Ecrire p' -> 1 + lignes p'
        | Si (q,r,s) -> 4 + (lignes q) + (lignes r) + (lignes s);;
val lignes : prog -> int = <fun>


exercice 3
# let rec lire p = match p with
        | Vide -> 0.0
        | Lire p' -> 1.0 +. lire p'
        | Ecrire p' -> lire p'
        | Si (q,r,s) -> (lire q) +. (lire r) +. (lire s);;
val lire : prog -> float = <fun>


exercice 4
# let rec concat p1 p2 = match p1 with
        | Vide -> p2
        | Lire p' -> Lire (concat p' p2)
        | Ecrire p' -> Ecrire (concat p' p2)
        | Si (q,r,s) -> Si (q,r,concat s p2);;
val concat : prog -> prog -> prog = <fun>

# let rec tete p = match p with
        | Vide -> Vide
        | Lire (p') -> Lire (tete p')
        | Ecrire (p') -> Ecrire (tete p')
        | Si (p, q, r) -> Vide;;
val tete : prog -> prog = <fun>

# let rec queue p = match p with
        | Lire p' -> queue p'
        | Ecrire p' -> queue p'
        | _ -> p;;
val queue : prog -> prog = <fun>

# let rec ecrire p = match p with
        | Vide -> 0.0
        | Lire p' -> ecrire p'
        | Ecrire p' -> 1.0 +. ecrire p'
        | Si (q,r,s) -> (ecrire q) +. (ecrire r) +. (ecrire s);;
val ecrire : prog -> float = <fun>

# let rec _fenetre l p = match p with
        | Vide -> 0.0
        | Si (q,r,s) -> ((_fenetre l (concat q s)) +.
                        (_fenetre l (concat r s)))/.2.0
        | _ -> let t = tete p in
                (if (l > 0.0)
                        then max (lire t) (ecrire t -. l)
                        else max (lire t +. l) (ecrire t)
                ) +. (_fenetre (l +. (lire t) -. (ecrire t)) (queue p));;
val _fenetre : float -> prog -> float = <fun>

# let fenetre = _fenetre 0.0;;
val fenetre : prog -> float = <fun>


  Home Up