Ответ 1
Назовите первое имя, вино, блюдо и цену для каждого человека.
поэтому мы представляем каждого человека как 4-мерный составной термин p(Name,Wine,Entree,Price)
. Кажется, их тоже четверо.
Затем мы просто записываем то, что нам говорят:
wine_and_dine(People):-
length(People,4),
Ordered1 = p(_,W1,red_snapper,_),
member(Ordered1, People),
% W1 \= bordeaux, but delay writing this down
% until it is defined some more
% or use freeze/2 in SWI:
freeze( W1, W1 \= bordeaux),
Lynda2 = p(lynda,_,_,PL2),
Had2 = p(_,bordeaux,_,PB2),
member(Lynda2, People),
member(Had2, People),
% PL2 < PB2, % check this only when they are known; or
freeze(PL2, freeze(PB2, PL2 < PB2)),
.... etc.
проконсультируйтесь с Q & A на zebra-puzzle.