Треки
/
Prolog
Prolog
/
Вправи
/
Весільні клопоти
Весільні клопоти

Весільні клопоти

Легка

Вступ

Наш найкращий друг готується до весілля і попросив нас стати організатором цього весілля. Ми погодилися, хоч усе, що ми знаємо про весілля, взято з фільму... Спочатку все йшло гладко, аж поки ми не взялися за розсаджування гостей за столом.

Прийдуть пʼять гостей, які будуть сидіти за одним великим круглим столом. Ось список гостей:

  • Esteban, Gustavo, Jaime, Malena і Valeria.

Наша мета - знайти таке розсаджування, за якого всі будуть задоволені своїми сусідами. Ми знаємо не всіх так добре, як хотілося б, але ось що нам відомо:

  • Gustavo балакучий
  • Valeria балакуча
  • Esteban симпатизує Malena
  • Malena симпатизує Esteban
  • Gustavo симпатизує Valeria (але не навпаки!)

Тих, хто симпатизує одне одному, можна посадити поруч, але лише тоді, коли це почуття взаємне. Балакучі люди легко сходяться з іншими, тож їх можна посадити поруч із будь-ким.

Тепер, коли ми маємо ці подробиці, настав час накидати план розсаджування!

Вказівки

Наше завдання - знайти ідеальну розсадку за столом. Зробимо це, визначаючи факти (те, що завжди правдиве) і правила (те, що правдиве за певних умов).

1. Перелічіть балакучих людей

Визначте факт chatty, який позначає балакучих людей. Факт chatty приймає один аргумент: імʼя балакучої людини, записане малими літерами.

chatty(gustavo).
true.

2. Перелічіть, хто кому подобається

Визначте факт likes, який позначає, хто кому подобається. Факт likes приймає два аргументи:

  1. Імʼя людини, якій подобається інша людина, записане малими літерами
  2. Імʼя людини, яка подобається, записане малими літерами
likes(esteban, malena).
true.

3. Люди, які подобаються одне одному, утворюють хорошу пару

Визначте правило pairing так, щоб воно було правдивим, коли двоє людей подобаються одне одному. Правило pairing приймає два аргументи:

  1. Імʼя першої людини, записане малими літерами
  2. Імʼя другої людини, записане малими літерами
pairing(malena, esteban).
true.

4. Балакучі люди утворюють пару з будь-ким

Визначте правило pairing так, щоб воно було правдивим, коли (принаймні) одна з двох людей у парі балакуча.

pairing(valeria, jaime).
true.

5. Перевірте розсадку

Визначте правило seating так, щоб воно було правдивим, коли всі пʼять пар утворюють хороші пари.

Правило pairing приймає пʼять аргументів:

  1. Імʼя першої людини, записане малими літерами
  2. Імʼя другої людини, записане малими літерами
  3. Імʼя третьої людини, записане малими літерами
  4. Імʼя четвертої людини, записане малими літерами
  5. Імʼя пʼятої людини, записане малими літерами

Скористайтеся щойно визначеними фактами і правилами, щоб перевірити розсадку.

seating(esteban, jaime, gustavo, malena, valeria).
false.
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Prolog Exercism

Час розпочати Весільні клопоти?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Prolog, а також 109 вправ та справжнє наставництво від людей, і все це безкоштовно.