Exerciții Laboratorul 5, Exercițiul 3

Zebra puzzle — cine deține zebra?

Vrem să rezolvăm în Prolog următorul puzzle — Zebra puzzle.

Pentru fiecare personaj știm:

  • locuiește într-o casă care are o anumită culoare
  • are o naționalitate
  • are un animal de companie
  • are o băutură preferată
  • fumează un anumit tip de țigări

Informații:

  1. Sunt cinci case.
  2. Englezul locuiește în casa roșie.
  3. Spaniolul are un câine.
  4. În casa verde se bea cafea.
  5. Ucraineanul bea ceai.
  6. Casa verde este imediat în dreapta casei bej.
  7. Fumătorul de Old Gold are melci.
  8. În casa galbenă se fumează Kools.
  9. În casa din mijloc se bea lapte.
  10. Norvegianul locuiește în prima casă.
  11. Fumătorul de Chesterfields locuiește lângă cel care are o vulpe.
  12. Kools sunt fumate în casa de lângă cea în care se ține calul.
  13. Fumătorul de Lucky Strike bea suc de portocale.
  14. Japonezul fumează Parliaments.
  15. Norvegianul locuiește lângă casa albastră.

Scopul este să determinăm naționalitatea posesorului zebrei.

Pentru a putea rezolva, veți defini:

  1. right(X, Y) — adevărat când X is Y + 1
  2. left(X, Y) — adevărat când Y is X + 1
  3. near(X, Y) — adevărat când X este sau la stânga, sau la dreapta lui Y

Veți reprezenta casele prin house(Number, Nationality, Colour, Pet, Drink, Cigarettes).

Te-ai blocat?
editor soluție
?-
Tastează o interogare (ex. father_of(sandra, X).) și apasă Enter — sau apasă pe un caz de test de mai jos.
Cazuri de test (1 — apasă pe unul ca să îl rulezi, sau Verifică pentru toate)
?
solution(_, Owner). așteptat: Owner = japanese