Эйнштейн Риддл, используя Пролог

Я пытаюсь разгадать загадку Эйнштейна, используя Пролог. Когда я пытаюсь бежать по домам (Hs), это показывает, нет. Задача

  1. Брит живет в красном доме.
  2. Швед держит собак в качестве домашних животных.
  3. Датчанин пьет чай.
  4. Зеленый дом находится слева от белого дома.
  5. Владелец зеленого дома пьет кофе.
  6. Владелец, который курит Pall Mall, выращивает птиц.
  7. Хозяин желтого дома курит Данхилл.
  8. Хозяин, живущий в центре дома, пьет молоко.
  9. Норвежец живет в первом доме.
  10. Хозяин, который курит смесь, живет рядом с тем, кто держит кошек.
  11. Владелец, который держит лошадь, живет рядом с тем, кто курит Dunhill.
  12. Владелец, который курит Bluemasters, пьет пиво.
  13. Немец курит принц.
  14. Норвежец живет рядом с синим домом.
  15. Владелец, который курит смесь, живет рядом с тем, кто пьет воду.
    дома (Hs):- длина (Hs, 5), член (h (английский, _, _, _, красный), Hs), член (h (швед, собака, _, _, _), Hs), член (h (_, _, _, кофе, зеленый), Hs), член (h (датский, _, _, чай, _), Hs), следующий (h (_, _, _, _, зеленый), h (_, _, _, _, белый), Hs), член (h (_, птица,'Pall Mall',_,_), Hs), член (h(_,_,'Dunhill',_, желтый), Hs),                         
       Hs = [_,_,h(_,_,_, молоко,_),_,_],                           
       Hs = [h(норвежский,_,_,_,_)|_], следующее (h (_, лошадь,_,_,_), h(_,_,'Dunhill',_,_), Hs), следующее (h (_, _, blend, _, _), h (_, кошка, _, _, _), Hs), член (h(_,_,'Blue Master', пиво, _), Hs), член (h (немецкий,_,'Prince',_,_), Hs), следующий (h (норвежский, _, _, _, _), h (_, _, _, _, синий), Hs), следующий (h(_,_,'Blend',_,_), h(_,_,_, вода, _), Hs), член (h (_, рыба, _, _, _), Hs). следующий (A, B, Ls):- добавить (_, [A,B|_], Ls). следующий (A, B, Ls):- добавить (_, [B,A|_], Ls).

Я понятия не имею, что не так. Спасибо

1 ответ

Вот обобщение вашей программы. Я добавил несколько дополнительных * удалить несколько целей и заменить некоторые термины на _/*origterm*/, И тем не менее, в результате программа все еще не работает. Следовательно, ошибка должна быть в оставшемся фрагменте. Вы ничего не сказали о программе (Edit: вы добавили что-то позже), поэтому я не знаю (Edit: want to), о чем она. Но несмотря ни на что, ошибка должна быть в оставшейся видимой части:

: - инициализация (дома (_Sol)).:- op(950, фу, *).
*_. дома (Hs):- длина (Hs, 5),
   * член (h (английский, _, _, _, красный), Hs),% 2 * член (h (швед, собака, _, _, _), Hs), * член (h (_, _, _, кофейный, зеленый), Hs), * член (h (датский, _, _, чай, _), Hs), * следующий (h (_, _, _, _, зеленый), h (_, _, _, _, белый), Hs), член (h (_, _/ * bird * /, 'Pall Mall', _, _), Hs), член (h (_, _, 'Dunhill', _, _/ * желтый * /), Hs), * Hs = [_, _, h (_, _, _, молоко, _), _, _], * Hs = [h (норвежский, _, _, _, _) | _], * следующий (h (_, конь, _, _, _), h (_, _, "Dunhill", _, _), Hs), следующий (h (_, _, blend, _, _), _/ * h (_, cat, _, _, _) * /, Hs), член (h (_, _, 'Blue Master ', _/ * beer * /, _), Hs), член (h (_/ * German * /, _,' Prince ', _, _), Hs), * следующий (h (норвежский, _, _, _, _), h (_, _, _, _, синий), Hs), следующий (h (_, _, "Смешать", _, _), _/ * h (_, _, _, вода, _) * /, Hs), * член (h (_, рыба, _, _, _), Hs). следующий (A, B, Ls):- добавить (_, [A,B|_], Ls). следующий (A, B, Ls):- добавить (_, [B,A|_], Ls).

Там не так много осталось! В видимой части есть хотя бы одна ошибка! (И, строго говоря, в других частях может быть гораздо больше ошибок. Мы просто не знаем).

Другие вопросы по тегам