Advertisement
Guest User

se.pl

a guest
Jun 1st, 2012
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.38 KB | None | 0 0
  1. :- [wiedza].
  2.  
  3. :- dynamic wiemy/2.
  4.  
  5. odp(116, tak) :- !.
  6. odp(110, nie) :- !.
  7. odp(StaryZnak, Odp) :-
  8.     write('nie zrozumiałem '),
  9.     put_code(StaryZnak), nl,
  10.     get_single_char(NowyZnak),
  11.     odp(NowyZnak, Odp).
  12.  
  13. zapytaj(OCo) :-
  14.     prefiks(pytanie, Prefiks),
  15.     write(Prefiks),
  16.     pytanie(OCo, Tresc),
  17.     write(Tresc),
  18.     write(' ? [t/n] '),
  19.     get_single_char(Znak),
  20.     put_code(Znak), nl,
  21.     odp(Znak, Odp),
  22.     assertz(wiemy(OCo, Odp)).
  23.  
  24. ustal(Co, Jakie) :-
  25.     wiemy(Co, _), !,
  26.     wiemy(Co, Jakie).
  27. ustal(Co, Jakie) :-
  28.     regula(Co), !,
  29.     sprawdz(Co, Jakie).
  30. ustal(Co, Jakie) :-
  31.     zapytaj(Co),
  32.     wiemy(Co, Jakie).
  33.  
  34. kolizje(X) :-
  35.     jednoz(Lista),
  36.     member(X, Lista),
  37.     member(Inne, Lista),
  38.     \+ X = Inne,
  39.     wiemy(Inne, tak).
  40.  
  41. sprawdz(X, tak) :-
  42.     \+ kolizje(X),
  43.     zachodzi(X), !,
  44.     assertz(wiemy(X, tak)).
  45. sprawdz(X, nie) :-
  46.     kolizje(X),
  47.     assertz(wiemy(X, nie)).
  48. sprawdz(X, nie) :-
  49.     \+ zachodzi(X),
  50.     assertz(wiemy(X, nie)).
  51.  
  52. sprawdz(X) :-
  53.     sprawdz(X, _).
  54.  
  55. rozpoznaj :-
  56.     regula(X),
  57.     sprawdz(X),
  58.     %tu cos wiemy i mamy zapisane
  59.     rodzaj(X),
  60.     sprawdz(X, tak), !, %ale musimy wiedzieć, czy to jest prawda
  61.     prefiks(odpowiedz, Prefiks),
  62.     nazwa(X, Nazwa),
  63.     nl, write(Prefiks),
  64.     write(Nazwa),
  65.     write('.'), nl, nl, fail.
  66. rozpoznaj.
  67.  
  68. odNowa :-
  69.     retractall(wiemy(_, _)).
  70.  
  71. coTo :-
  72.     odNowa, fail.
  73. coTo :-
  74.     rozpoznaj.
  75.  
  76. czy(X) :-
  77.     odNowa,
  78.     sprawdz(X),
  79.     wiemy(X, Odp),
  80.     nl, write(Odp), nl, nl.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement