Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. % Definiujemy moduł zawierający rozwiązanie.
  2. % Należy zmienić nazwę modułu na {imie}_{nazwisko} gdzie za
  3. % {imie} i {nazwisko} należy podstawić odpowiednio swoje imię
  4. % i nazwisko bez znaków diakrytycznych
  5. %:- module(pawel_szelag, [solve/2]).
  6. % definiujemy operatory ~/1 oraz v/2
  7. :- op(200, fx, ~).
  8. :- op(500, xfy, v).
  9. % Główny predykat rozwiązujący zadanie.
  10. % UWAGA: to nie jest jeszcze rozwiązanie; należy zmienić jego
  11. % definicję.
  12.  
  13. solve(Clauses, Solution) :-
  14. toList(Clauses,ListOfClauses).
  15.  
  16.  
  17. %czy jest literałem
  18. lit(A) :- atom(A).
  19. lit(~A) :- atom(A).
  20.  
  21. %zwraca pierwszy element klauzuli
  22. get_first_el_of_clause(A,A) :- lit(A).
  23. get_first_el_of_clause(A v _, A) :- lit(A).
  24.  
  25. %zwraca klauzule bez pierwszego elementu
  26. get_rest_of_clause(A v B, B) :- lit(A).
  27. get_rest_of_clause(_, []).
  28.  
  29. to_list(Clause, List) :-
  30. to_list(Clause, [], List).
  31.  
  32. to_list([], List, List).
  33.  
  34. to_list(H, T, Acc) :-
  35. get_first_el_of_clause(H,H1),
  36. get_rest_of_clause(H,T1),
  37. to_list(T1, [H1|T], Acc),
  38. !.
  39.  
  40. create_list_of_clauses([H|T], [H1|T1]) :-
  41. to_list(H,H1),
  42. create_list_of_clauses(T,T1).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement