A legjobb barátod éppen házasodik, és megkért, hogy legyél te az esküvőszervezője. Elvállaltad, pedig minden, amit erről tudsz, egy filmből származik... Minden simán ment, amíg el nem kezdtél foglalkozni az ülésrenddel.
Öt vendég érkezik, akik egy nagy, kerek asztal körül foglalnak helyet. Íme a vendéglista:
A célod, hogy olyan ülésrendet találj, ahol mindenki elégedett a szomszédaival. Nem ismered mindenkit annyira, amennyire szeretnéd, de amit tudsz, az a következő:
Azok, akik kedvelik egymást, egymás mellé ülhetnek, de csak akkor, ha mindketten így éreznek. A beszédes emberek könnyen szót értenek egymással, ezért bárki mellé leülhetnek.
Ha ezeket a részleteket ismered, itt az idő, hogy felvázolj egy ülésrendet!
A feladatod, hogy megtaláld a tökéletes ülésrendet az asztalnál. Ezt úgy éred el, hogy tényeket (mindig igaz dolgokat) és szabályokat (feltételesen igaz dolgokat) deklarálsz.
Definiáld a chatty tényt, amely a beszédes embereket jelöli.
A chatty tény egyetlen argumentumot vár: a beszédes ember kisbetűs nevét.
chatty(gustavo).
true.
Definiáld a likes tényt, amely azt jelöli, hogy ki kit kedvel.
A likes tény két argumentumot vár:
likes(esteban, malena).
true.
Definiáld a pairing szabályt úgy, hogy az igaz legyen, ha a két ember kölcsönösen kedveli egymást.
A pairing szabály két argumentumot vár:
pairing(malena, esteban).
true.
Definiáld a pairing szabályt úgy, hogy az igaz legyen, ha a párosított két ember közül (legalább) az egyik beszédes.
pairing(valeria, jaime).
true.
Definiáld a seating szabályt úgy, hogy az igaz legyen, ha mind az öt pár jó párosítás.
A pairing szabály öt argumentumot vár:
Az imént definiált tényekkel és szabályokkal ellenőrizd az ülésrendet.
seating(esteban, jaime, gustavo, malena, valeria).
false.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Prolog nyelvet 109 feladat segítségével, valódi emberi mentorálással, mindez ingyen.