| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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. |