Логические задачи
predicates
name(symbol) son(symbol)
result(symbol, symbol)
solve(symbol,symbol,symbol,symbol,symbol,symbol)
clauses
name(anna). name(irina). name(olga). son(denis). son(kiril). son(maxim).
result(X,Y):-name(X),X=anna,son(Y),Y=denis;
name(X),X=irina,son(Y),Y=kiril.
result(X,Y):-name(X),X=irina,son(Y),Y=maxim;
name(X),X=anna,son(Y),Y=kiril.
result(X,Y):-name(X),X=olga,son(Y),Y=kiril;
name(X),X=anna,son(Y),Y=maxim.
solve(X1,Y1,X2,Y2,X3,Y3):-X1=irina,result(X1,Y1),X2=anna,result(X2,Y2),
X3=olga,result(X3,Y3),Y1<>Y2,Y2<>Y3,Y1<>Y3.
goal solve(N1,M1,N2,M2,N3,M3),write(N1,' ',M1,'\n',N2,' ',M2,'\n',N3,' ',M3),nl,fail.
Три молодые мамы Анна, Ирина и Ольга, гуляя в парке со своими малыша-ми, встретили свою подругу. На вопрос, как зовут малышей, желая подшутить над подругой, они ответили:
Анна: моего малыша зовут Денис, а Кирилл – сын Ирины.
Ирина: моего сына зовут Максим, а Кирилл - сын Анны зовут.
Ольга: мой мальчик – Кирилл, а сына Анны зовут Максим.
Каждая из них один раз сказала правду и один раз солгала.
Как зовут мальчиков Анны, Ирины, Ольги?