Язык логического программирования ПРОЛОГ. Бураков М.В. - 27 стр.

UptoLike

Составители: 

25
Таблица 2
ямИотсеме-тсеме-тсеме-3
ашелА
ятеП–
ялоК–
Очевидно, Петя может занимать только первое место, тогда Коля –
только второе, а Алеше достается третье (табл. 3).
Таблица 3
ямИотсемe-тсемe-тсемe-3
ашелА–+
ятеП+
ялоК–+
При описании этой задачи на ПРОЛОГе получается следующая про-
грамма.
Программа 17
PREDICATES
name(symbol)
mesto(symbol)
prizer(symbol,symbol)
solution(symbol,symbol,symbol,symbol,symbol,symbol)
CLAUSES
name(alex). name(pier). name(nike).
mesto(odin). mesto(dva). mesto(tri).
prizer(X,Y):-name(X),mesto(Y),X=pier,not(Y=dva),not(Y=tri);
name(X),mesto(Y),X=nike,not(Y=tri);
name(X),mesto(Y),not(X=pier),not(X=nike).
solution(X1,Y1,X2,Y2,X3,Y3):-name(X1),name(X2),name(X3),
mesto(Y1),mesto(Y2),mesto(Y3),prizer(X1,Y1),
prizer(X2,Y2), prizer(X3,Y3),Y1<>Y2,Y2<>Y3,Y1<>Y3,
X1<>X2,X2<>X3,X1<>X3,!.
Конечно, в приведенном примере быстрее использовать таблицу для
получения решения. Однако в более сложных случаях таблицы стано-
вятся многомерными. Рассмотрим еще один пример – логическую зада-
чу (“Наука и жизнь” №3 , 1968):