Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задачи код.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
204.79 Кб
Скачать

Завдання 3

Дані наступні факти для предикату reys(From, To), який описує існуючі рейси літаків із зазначенням пунктів відправлення та прибуття.

reys(kiev,odessa).

reys(odessa,lviv).

reys(lviv,kharkiv).

reys(kiev,lviv).

reys(kharkiv,moscow).

Необхідно створити СПР, яка визначає для двох напрямків (From, To), чи існує можливість долетіти з одного міста до іншого за дві пересадки і повертає негативну відповідь у будь-якому іншому випадку. Визначити, які саме рейси вимагають дві пересадки.

рейс(киев,одесса).

рейс(одесса,львов).

рейс(львов,харьков).

рейс(киев,львов).

рейс(харьков,москва).

путь_с_пересадками(А, В):-

рейс(А, Б),

рейс(Б, В),

write('откуда '), write(А), write(' куда '), write(Б), write(' куда '), write(В).

Завдання 4

Розробити автоматизовану СПР, яка вирішить задачу Ейнштейна.

Умова задачі: На одній вулиці розташовано 5 будинків різного кольору (синього, білого, жовтого, зеленого і червоного). В цих будинках живе 5 людей різних національностей (швед, данець, англієць, німець та норвежець), які п'ють 5 різних видів напоїв (пиво, кава, чай, вода, молоко), курять 5 різних марок цигарок(Dunhill, Marlboro, Rothmans, PallMall та PhillipMorris) та розводять 5 різних тваринок (коні, птахи, рибки, коти та собаки).

  1. Норвежець живе в 1 будинку.

  2. Англієць живе в червоному будинку.

  3. Зелений будинок знаходиться зліва від білого.

  4. Данець п'є чай.

  5. Хто курить Rothmans, живе біля того, хто розводить котів.

  6. Хто живе в жовтому будинку, курить Dunhill.

  7. Німець курить Marlboro.

  8. Хто живе в центральному будинку, той п'є молоко.

  9. Сусід того, хто курить Rothmans, п'є воду.

  10. Хто курить PallMall, розводить пташок.

  11. Швед розводить собак.

  12. Норвежець живе біля синього будинку.

  13. Хто розводить коней, живе в синьому будинку.

  14. Хто курить PhillipMorris, п'є пиво.

  15. В зеленому будинку п'ють каву.

Запитання: хто розводить рибок?

neighbors(A,B) :- L=[1,2,3,4,5], member(A,L),member(B,L),(A is B+1 ;A is B-1 ).

left_right(A,B) :- L=[1,2,3,4,5], member(A,L),member(B,L), A is B-1 .

solve_the_puzzle(Fishs) :-

 Red=Englishman,  

 Swede=Dog,

 Green=Coffee,

 Dane=Tea,

 left_right(Green,White),

 Pall_mall=Birds,

 Yellow=Dunhill,

 Milk=3,

 Norwegian=1,

 neighbors(Marlboro,Cat),  

 neighbors(Dunhill,Horse),

 Beer=Winfield,

 German=Rothmans,

 neighbors(Norwegian,Blue),

 neighbors(Marlboro,Water),

 permutation([Red,Yellow,Green,Blue,White],[1,2,3,4,5]),

 permutation([Englishman,Dane,German,Norwegian,Swede],[1,2,3,4,5]),

 permutation([Dunhill,Winfield,Rothmans,Marlboro,Pall_mall],[1,2,3,4,5]),

 permutation([Coffee,Tea,Water,Beer,Milk],[1,2,3,4,5]),

 permutation([Dog,Cat,Birds,Fishs,Horse],[1,2,3,4,5]),

 format('Englishman=~p,Dane=~p,German=~p,Norwegian=~p,Swede=~p',[Englishman,Dane,German,Norwegian,Swede]).

Рисунок 3.1 – Вирішення задачі Ейнштейна

Завдання 5

Побудувати автоматизовану СПР на основі дерева сімейних відносин вашої сім’ї. Дерево має містити не менше 10 родичів і мати не менше чотирьох рівнів. Допускається використовувати уявні імена.

Перевірити правильність СПР, виконавши наступні запити і навести їх результат:

  1. Визначити ваших братів і сестер.

  2. Визначити ваших батьків.

  3. Визначити вашого дідуся і бабусю.

  4. Перевірити, чи є певна людина одним із ваших родичів.

man(сергей).

man(олег).

man(александр).

man(владимир).

man(анатолий).

child(владимир,мария).

child(игорь,анна).

child(анастасия,дмитрий).

child(анастасия,ольга).

child(жанна,галина).

child(жанна,анатолий).

husband(сергей,мария).

husband(олег,анна).

husband(анатолий,галина).

father(X,Y):-man(X),child(Y,X).

mother(X,Y):-child(Y,X), not(man(X)).

son(X,Y):-man(X),child(X,Y).

daughter(X,Y):-child(X,Y), not(man(X)).

wife(X,Y):-husband(Y,X).

brother(X,Y):-man(X),child(Y,Z),child(X,Z),X\=Y.

sister(X,Y):-child(Y,Z),child(X,Z), not(man(X)),X\=Y.

grandson(X,Y):-son(X,Z2),child(Z2,Y).

granddaughter(X,Y):-daughter(X,Z2),child(Z2,Y).

granfather(X,Y):-father(X,Z2),(father(Z2,Y);mother(Z2,Y)).

grandmother(X,Y):-mother(X,Z2),(father(Z2,Y);mother(Z2,Y)).

father_in_law(X,Y):-father(X,Z),wife(Z,Y).

mother_in_law(X,Y):-mother(X,Z),wife(Z,Y).

unkle(X,Y):-brother(X,Z),(father(Z,Y);mother(Z,Y));husband(X,C),sister(C,Z),(father(Z,Y);mother(Z,Y)).

aunt(X,Y):-sister(X,Z),(father(Z,Y);mother(Z,Y));wife(X,C),unkle(C,Y).

nephew(X,Y):-son(X,Z),(brother(Z,Y);sister(Z,Y)).

niece(X,Y):-daughter(X,Z),(brother(Z,Y);sister(Z,Y)).

great-grandson(X,Y):-son(X,Z),child(Z,Z2),child(Z2,Y).

great-granddaughter(X,Y):-daughter(X,Z2),child(Z,Z2),child(Z2,Y).

female_cousin(X,Y):-daughter(X,Z),(unkle(Z,Y);aunt(Z,Y)).

cousin(X,Y):-son(X,Z),(unkle(Z,Y);aunt(Z,Y)).