%% Question 1. Version avec read.

dico(maison).
dico(chien).
dico(voiture).
dico(folie).

t1 :-
  repeat,
    write('Donnez le mot : '),
    read(M),
    appartient(M),
    M=end,
  !.

appartient(M) :- 
  dico(M),
  !,
  write('Mot trouvé'), nl.
appartient(_) :-
  write('Mot absent'), nl.

%% Question 1, version avec lecture du mot car par car.
%% Il faut remplacer read(M) par lit_mot(M).

t2 :-
  repeat,
    write('Donnez le mot : '),
    lit_mot(M),
    appartient(M),
    M=end,
  !.

lit_mot(Mot) :-
  lit_liste_car(Liste),
  name(Mot,Liste).

lit_liste_car(Liste) :-
  get0(C),
  lit_suite(C,Liste).

lit_suite(36,[]) :- !.
lit_suite(C,[C|Reste]) :-
  get0(S),
  lit_suite(S,Reste).


%% Question 2 : dictionnaire bilingue

dico(maison,house).
dico(chien,dog).
dico(voiture,car).
dico(folie,madness).

t3 :-
  repeat,
    write('Donnez le mot : '),
    lit_mot(M),
    traduction(M),
    M=end,
  !.

traduction(Mf) :-
  dico(Mf,Me), !,
  write('Le mot '), write(Mf), write(' se traduit par '), write(Me), nl.
traduction(Mf) :-
  write('Traduction du mot '), write(Mf), write( ' inconnue.'), nl.

%% Question 3 : augmentation ou diminution du dictionnaire

t4 :-
  repeat,
    write('Ajouter un mot : 1'), nl,
    write('Supprimer un mot : 2'), nl,
    write('Chercher un mot : 3'), nl,
    write('Fin : 4'), nl,
    read(Choix),
    perform(Choix),
    Choix = 4,
  !.

perform(1) :-
  write('Mot français : '), read(Mf),
  write('Mot anglais : '), read(Me),
  assert((dico(Mf,Me))).
perform(2) :-
  write('Mot français : '), read(Mf),
  dicoa(Mf,Me), !, 
  retract(dico(Mf,Me)).
perform(2) :-
  write('Mot absent'), nl.
perform(3) :- 
  write('Mot français : '), read(Mf),
  dico(Mf,Me), !,
  write('Le mot '), write(Mf), write(' se traduit par '), write(Me), nl.
perform(3) :- 
  write('Traduction  inconnue.'), nl.
perform(_).

