Загадка Эйнштейна Пролог

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

 there are 5 houses
 the Englishman lives in the red house
 the Spaniard owns the dog
 coffee is drunk in the green house
 the Ukrainian drinks tea
 the green house is immediately to the right of the ivory house
 the Old Gold smoker owns snails
 Kools are smoked in the yellow house
 milk is drunk in the middle house
 the Norwegian lives in the first house
 the man who smokes Chesterelds lives in the house next to the man with the fox
 3 Kools are smoked in the house next to the house where the horse is kept
 the Lucky Strike smoker drinks orange juice
 the Japanese smokes Parliaments
 the Norwegian lives next to the blue house

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

Я собирался использовать анонимные переменные house (englishman, red, _, _, _) . но я не знаю, как интерпретировать это для домашнего задания.

Вот ограничения: вам следует использовать следующие двоичные символы предикатов:

owns(N,Pet)
smokes(N, Cigarette).
drinks(N, Drink).

Кроме этого, вы можете использовать любое количество предикатов.

вот как я инициализировал факты, но я не знаю, как создавать правила в этом случае

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

owns(spaniard, dog).
drinks(ukrainian, tea).
smokes(japanese, parliaments).
right_of(ivory, green).
lives(englishman, red).
owns(X, snail) :- smokes(X, old_gold).
smokes(X, kools) :- owns(X, yellow).
smokes(X, lucky_strike) :- drinks(X, orange_juice).
drinks(X, coffee) :- owns(X, green_house).

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

14
задан svick 31 January 2016 в 00:39
поделиться