Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let usagers_aller = [
- creer_usager "camille" 'A' 'D' 1;
- creer_usager "antoine" 'B' 'D' 3;
- creer_usager "hubert" 'C' 'E' 2;
- creer_usager "felix" 'D' 'F' 4;
- creer_usager "yassine" 'E' 'F' 5;
- creer_usager "ali" 'A' 'C' 5;
- creer_usager "clemence" 'B' 'C' 3;
- creer_usager "fatima" 'C' 'D' 4;
- creer_usager "franz" 'B' 'E' 4;
- creer_usager "perrine" 'C' 'F' 2;
- ];;
- let usagers_aller_retour = [
- creer_usager "thomas" 'F' 'A' 3;
- creer_usager "seb" 'E' 'B' 2;
- creer_usager "camille" 'A' 'D' 1;
- creer_usager "antoine" 'B' 'D' 3;
- creer_usager "hubert" 'C' 'E' 2;
- creer_usager "floriane" 'D' 'C' 1;
- creer_usager "laure" 'C' 'B' 5;
- creer_usager "fernando" 'B' 'A' 5;
- creer_usager "anabelle" 'F' 'E' 5;
- creer_usager "felix" 'D' 'F' 4;
- creer_usager "yassine" 'E' 'F' 5;
- creer_usager "romain" 'E' 'B' 4;
- creer_usager "alexis" 'D' 'C' 2;
- creer_usager "ali" 'A' 'C' 5;
- creer_usager "clemence" 'B' 'C' 3;
- creer_usager "amel" 'D' 'B' 4;
- creer_usager "fatima" 'C' 'D' 4;
- creer_usager "franz" 'B' 'E' 4;
- creer_usager "perrine" 'C' 'F' 2;
- creer_usager "delphine" 'D' 'A' 2;
- ];;
- let ligne_de_tram = 'A'::'B'::'C'::'D'::'E'::'F'::[];;
- let rec list_last l =
- match l with
- |[]->failwith "liste vide"
- |h::[]->h
- |h::t-> list_last t
- ;;
- let rec terminus l =
- match l with
- |[]->false
- |h::[]->true
- |h::t->false
- ;;
- let rec incident c l =
- match l with
- |[]->[]
- |h::t-> if c=h
- then
- []
- else
- h::(incident c t)
- ;;
- let listetarifs = 1.40::1.30::1.20::0.90::0.70::[];;
- let rec prix i l =
- match l with
- |[]->failwith "Pas de prix"
- |h::t-> if i-1 = 0
- then
- h
- else
- if i-1 > 0
- then
- prix (i-1) t
- else
- failwith "Pas de prix"
- ;;
- type usager =
- {
- nom : string;
- depart : char;
- arrivee : char;
- tarif : int
- }
- ;;
- let creer_usager nm dp ar tr =
- {
- nom = nm;
- depart = dp;
- arrivee = ar;
- tarif = tr
- }
- ;;
- let rec compter_abonnes l =
- match l with
- |[]->0
- |h::t-> (compter_abonnes t) + if h.tarif = 5
- then
- 1usagers_aller
- else
- 0
- ;;
- let rec somme_des_prix l =
- match l with
- |[]-> 0.
- |h::t-> (prix h.tarif listetarifs) +. (somme_des_prix t)
- ;;
- type tramway =
- {
- ligne : char list;
- dedans : usager list;
- dehors : usager list
- }
- ;;
- let creer_tramway ln dd dh =
- {
- ligne = ln;
- dedans = dd;
- dehors = dh
- }
- ;;
- let tram_vide = creer_tramway ligne_de_tram [] usagers_aller;;
- let tram_plein = creer_tramway ligne_de_tram usagers_aller [];;
- let remdebut l =
- match l with
- |[]->failwith "Pas possible"
- |h::t->t
- ;;
- let avancer_tram t =
- creer_tramway (remdebut t.ligne) t.dedans t.dehors
- ;;
- let debut l =
- match l with
- |[]->failwith "Pas possible"
- |h::t->h
- ;;
- let monter trm =
- let test u = (u.depart=(debut trm.ligne)) in
- let test2 u = not (u.depart=(debut trm.ligne)) in
- let usagers_qui_montent = List.filter test trm.dehors in
- creer_tramway trm.ligne (trm.dedans @ usagers_qui_montent) (List.filter test2 trm.dehors)
- ;;
- let descendre trm =
- let test u = (u.arrivee=(debut trm.ligne)) in
- let test2 u = not (u.arrivee=(debut trm.ligne)) in
- let usagers_qui_descendent = List.filter test trm.dehors in
- creer_tramway trm.ligne (List.filter test2 trm.dedans) (trm.dehors @ usagers_qui_descendent)
- ;;
- let deplacer trm = descendre (avancer_tram (monter (trm) ) );;
- let sens_usager u =
- u.depart<u.arrivee
- ;;
- let sens_tram trm =
- match trm.ligne with
- |[] -> true
- |_::_ -> true
- |h1::h2::_ -> (h1<h2)
- ;;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement