Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Prolog > Алгоритм работы программы


Автор: fivebitsQ 10.5.2015, 11:44
Помогите разобрать программу по коду, как она работает, алгоритм

ПОСТАНОВКА ЗАДАЧИ. 
Кондратьев, Давыдов и Федоров живут на одной улице. Один из них - столяр, другой - маляр, третий - водопроводчик. Недавно маляр хотел попросить своего знакомого столяра сделать кое-что для своей квартиры, но ему сказали, что столяр работает в доме водопроводчика. Известно также, что Федоров никогда не слышал о Давыдове. Определите, кто чем занимается.
ЛИСТИНГ ПРОГРАММЫ:
domains
slist=string*
man=m(string,string).
men=man*
predicates
permutation(slist,slist).
insert(string,slist,slist).
solve(men).
z(string,string).
znakomi(string,string).
clauses
permutation([],[]).
permutation([H|Tail],P):-permutation(Tail,PTail),insert(H,PTail,P).
insert(X,L,[X|L]).
insert(X,[H|Tail],[H|NewTail]):-insert(X,Tail,NewTail).
z("malyar","stolyar").
z("stolyar","vodoprovodchik").
znakomi(A,B):-z(A,B);z(B,A).
solve([m("Kondratiev",A),m("Davidov",B),m("Fedotov",C)]):-
permutation(["stolyar","malyar","vodoprovodchik"],[A,B,C]),
not(znakomi(B,C)).
goal
solve(Ans), write(Ans),nl.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)