Решение проблемы, подобной загадке Эйнштейна в Прологе - PullRequest
0 голосов
/ 08 января 2020

У меня есть программа, очень похожая на загадку Эйнштейна, которую мне нужно разгадать в Прологе, я использовал найденное мной решение, чтобы помочь мне, Einstein.pl . Вот мои подсказки и проблемы: Есть пять офисов, каждый из которых имеет свой цвет, человек, работающий в другом секторе, имеет другой P C, пьет другой напиток и имеет другой мобильный телефон.

Подсказки:

  1. Сектор компьютеров имеет красный офис.
  2. Сектор организации и управления имеет MacBook Pro.
  3. Зеленый офис пьет кофе.
  4. Сектор экономики пьет кофе.
  5. Зеленый офис находится рядом с бежевым офисом (бежевый - это мпез в моей программе)
  6. У парня с iphone есть MacBook Air.
  7. У парня с ежевикой желтый офис.
  8. Офис посередине пьет молоко.
  9. Первый офис из международного сектора.
  10. Парень с нокией рядом с парнем с нетбуком.
  11. парень с ежевикой рядом с парнем с windows 7.
  12. парень с android пьет апельсиновый сок.
  13. У парня из сектора снабжения есть Эрикссон.
  14. Парень из международного сектора рядом с синим офисом.

Мне нужно найти, какой парень имеет ноутбук windows xp, а какой пьет воду.

Это то, что я сделал и Я думаю, что это должно работать, я не вижу ничего плохого, но когда я запускаю его, я получаю некоторые ошибки, и я не знаю, почему, если кто-то может помочь мне, это было бы хорошо, спасибо.

right_of(X, Y) :- X is Y+1.

left_of(X, Y) :- right_of(Y, X).

next_to(X, Y) :- right_of(X, Y).
next_to(X, Y) :- left_of(X, Y).

solution(Ps, Pc, Drink) :-
   Ps = [ office(1, Color1, Sector1, Pc1, Drink1, Mobile1),
          office(2, Color2, Sector2, Pc2, Drink2, Mobile2),
          office(3, Color3, Sector3, Pc3, Drink3, Mobile3),
          office(4, Color4, Sector4, Pc4, Drink4, Mobile4),
          office(5, Color5, Sector5, Pc5, Drink5, Mobile5)],
   hint(office(_,      _,computers,       _,             _,   red), Ps),
   hint(office(_,      _,    organdman,     macpro,      _,     _), Ps),
   hint(office(_,  green,         _,      _,    coffee,         _), Ps),
   hint(office(_,      _,    economics,   _,       tea,         _), Ps)
   hint(office(A,  green,         _,      _,         _,         _), Ps),
   hint(office(B,   mpez,         _,      _,         _,         _), Ps),
   right_of(A,B),
   hint(office(_,      _,         _,     macair,     _,    iphone), Ps),
   hint(office(_, yellow,         _,      _,        _, blackberry), Ps),
   hint(office(3,      _,         _,      _,      milk,         _), Ps),
   hint(office(1,      _, international,      _,         _,     _), Ps),
   hint(office(C,      _,         _,      _,         _,     nokia), Ps),
   hint(office(D,      _,         _,    netbook,     _,         _), Ps),
   next_to(C, D),
   hint(office(E,      _,         _,      _,         _,blackberry), Ps),
   hint(office(F,      _,         _,   windows7,         _,     _), Ps),
   next_to(E, F),
   hint(office(_,      _,         _,      _,    orange,   android), Ps),
   hint(office(_,      _,    supply,      _,         _,  ericsson), Ps),
   hint(office(G,      _, international,      _,         _,     _), Ps),
   hint(office(H,   blue,         _,      _,         _,         _), Ps),
   next_to(G, H),
   hint(office(Pc,     _,         _,  windowsxp,         _,     _), Ps),
   hint(office(Drink,  _,         _,      _,     water,         _), Ps).

Вот ошибки, которые я получаю

...