Задание
На заводе работают 3 друга: слесарь, токарь и сварщик. Их фамилии Борисов, Иванов и Семенов. У слесаря нет ни братьев, ни сестер. Он младший из друзей. Семенов, женат на сестре Борисов он, старше токаря. Назвать фамилии слесаря,
токаря и сварщика.
Описание программы
В процессе выполнения задания была написана программа, которая позволяет определить фамилии слесаря, токаря и сварщика. Для этого необходимо ввести запрос в формеivanov, borisov, Semenov. (Рис. 1).
Рис. – Выполнение программы
Код программы:
Заключение
В результате выполнения данной лабораторной работы, были изучены основы языка программирования высокого уровня TurboProlog и интерфейс соответствующего пакета программ, разработанного компанией BorlandInternational. Была решена выданная задача поиска мест участников соревнования.
In a bottle, a glass, a jug and a jar there is a milk, kvass, lemonade and water. It is known, that milk and water are not in the bottle, the vessel with lemonade is between the jug and a vessel with kvass, in the jar - not lemonade and not water. The glass is nearby jar and vessel with milk. What liquids on vessels are allocated?
Задание
На языке Turbo Prolog реализовать решение задачи: Три друга разной национальности на соревнованиях заняли 1, 2, 3 места. Зовут друзей по-разному и занимаются они разными видами спорта. Майкл предпочитает баскетбол и играет лучше американца, англичанин Саймон играет лучше теннисиста. Игрок в крикет занял 1-е место. Кто является австралийцем? Какое место занял Сигурд?
Описание программы
В процессе выполнения задания была написана программа, которая позволяет определить соответствие имени занятому месту, национальность, а также любимый вид спорт всех трех друзей.
Для этого программа обладает внутренней целью otvet. Otvet состоит из 5 подцелей. Программа, поэтапно, благодаря выявлению верных соответствий и на основе имеющих знаний, успешно завершает все пять подцелей, тем самым, выдавая верное соответствие (рис.1).
Рисунок – Выполнение программы
Код программы:
Domains
man=m(name,nationality,sport)
men=man*
name,nationality,sport=string
A=reference man*
B=reference man*
C=reference man*
Predicates
name(man,name)
nationality(man,nationality)
sport(man,sport)
first(men,man)
nondeterm better(man,man,men)
nondeterm friend(man,men)
nondeterm otvet
Clauses
better(A,B,[A,B,_]).
better(B,C,[_,B,C]).
better(A,C,[A,_,C]).
name(m(N,_,_),N).
nationality(m(_,Nat,_),Nat).
sport(m(_,_,S),S).
first([X|_],X).
otvet:-
better(X1k1,X2k1,Sportsmen),name(X1k1,"Michael"),sport(X1k1,"Basketball"),nationality(X2k1,"American"),
better(X1k2,X2k2,Sportsmen),name(X1k2,"Saimon"),nationality(X1k2,"Englishman"),sport(X2k2,"Tennis"),
first(Sportsmen,X1k3),sport(X1k3,"Cricket"),
friend(X1k4,Sportsmen),name(X1k4,"Sigurd"),
friend(X1k5,Sportsmen),nationality(X1k5,"Australian"),
Sportsmen=[m(N1,Nat1,S1),m(N2,Nat2,S2),m(N3,Nat3,S3)],
write(N1, " is on the 1-st place. He is an ", Nat1 ,". He is fond of ", S1, "."),nl, nl,
write(N2, " is on the 2-nd place. He is an ", Nat2 ,". He is fond of ", S2, "."),nl, nl,
write(N3, " is on the 3-rd place. He is an ", Nat3 ,". He is fond of ", S3, "."),nl, nl.
friend(X,[X|_]).
friend(X,[_|Y]):-friend(X,Y).
Goal
otvet.
