Advertisement
Guest User

Untitled

a guest
Jun 11th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.44 KB | None | 0 0
  1.  
  2. rozwiazanie([Morderca, Pomocnik]) :-
  3.  L0 = [alicja, celina, beata, dorota], %L0 to lista wszystkich sąsiadów
  4.  select(Morderca, L0, L1),  %tutaj robimy coś takiego, że wybieramy morderce z L0 i zostaje lista L1, np. Morderca = alicja, to wtedy L1 =[celina,beata,dorota]
  5.  select(Pomocnik, L1, Niewinne), %tutaj analogicznie jak poprzednio
  6.  zeznanieA([Morderca, Pomocnik], Niewinne), %tu bedziemy wywoływać zeznania
  7.  zeznanieB([Morderca, Pomocnik], Niewinne),
  8.  zeznanieC([Morderca, Pomocnik], Niewinne),
  9.  zeznanieD([Morderca, Pomocnik], Niewinne).
  10.  
  11.  %pierwszy nawias w kazdym zeznaniu mowi o tym, co jest prawda jesli zeznanie prawdziwe, a drugi nawias co jesli zeznanie jest falszywe
  12. zeznanieA(_, N) :-
  13. (
  14.  member(alicja, N),!, %jesli A mowi prawde to zakladamy, ze A nalezy do N, czyli do Niewinnych (warto zerknac na gore ze to N to jest to Niewinne z gory)
  15.  (member(celina, N) ; member(beata, N)) %tutaj jest zeznanie zamienione z implikacji na alternatywe
  16. ) ;
  17. (
  18.  \+ (member(celina, N) ; member(beata, N)) % jesli A klamime to znaczy ze prawdziwe jest zaprzeczenie tego co powiedziala
  19. ).
  20.  
  21. zeznanieB(W, N) :-
  22. (
  23.  member(beata, N),!,
  24.  ( member(alicja,W) ; member(celina,W) )
  25. ) ;
  26. (
  27.  \+ ( member(alicja,W) ; member(celina,W) )
  28. ).
  29.  
  30. zeznanieC([M,_],N) :-
  31. (
  32.  member(celina, N),!,
  33.  ( M \= beata ; member(dorota, N) )
  34. ) ;
  35. (
  36.  \+ ( M \= beata ; member(dorota, N) )
  37. ).
  38.  
  39. zeznanieD(_,N) :-
  40. ( member(dorota,N)
  41. );
  42. (
  43. \+ member(dorota,N)
  44. ).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement