Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % Definiujemy moduł zawierający rozwiązanie.
- % Należy zmienić nazwę modułu na {imie}_{nazwisko} gdzie za
- % {imie} i {nazwisko} należy podstawić odpowiednio swoje imię
- % i nazwisko bez znaków diakrytycznych
- %:- module(pawel_szelag, [solve/2]).
- % definiujemy operatory ~/1 oraz v/2
- :- op(200, fx, ~).
- :- op(500, xfy, v).
- % Główny predykat rozwiązujący zadanie.
- % UWAGA: to nie jest jeszcze rozwiązanie; należy zmienić jego
- % definicję.
- solve(Clauses, Solution) :-
- toList(Clauses,ListOfClauses).
- %czy jest literałem
- lit(A) :- atom(A).
- lit(~A) :- atom(A).
- %zwraca pierwszy element klauzuli
- get_first_el_of_clause(A,A) :- lit(A).
- get_first_el_of_clause(A v _, A) :- lit(A).
- %zwraca klauzule bez pierwszego elementu
- get_rest_of_clause(A v B, B) :- lit(A).
- get_rest_of_clause(_, []).
- to_list(Clause, List) :-
- to_list(Clause, [], List).
- to_list([], List, List).
- to_list(H, T, Acc) :-
- get_first_el_of_clause(H,H1),
- get_rest_of_clause(H,T1),
- to_list(T1, [H1|T], Acc),
- !.
- create_list_of_clauses([H|T], [H1|T1]) :-
- to_list(H,H1),
- create_list_of_clauses(T,T1).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement