Моделирование остановок подземного трубопровода примерно так:
stop(line1, 1, a).
stop(line1, 2, b).
stop(line1, 3, d).
stop(line1, 4, e).
Я пытаюсь определить last(L, S)
, что верно, если станция S
является последней станцией в линии L
. Так что last(line1, e)
верно, но last(line1, d)
нет.
Я пытался last(L, S) :- stop(L, N, S), \+stop(L, N+1, _).
, но он возвращает true для каждой остановки на линии, и я не понимаю, почему. Станция является последней остановкой линии, если она а) существует на этой линии и б) если линия не имеет остановки после нее. Правильно?
Полагаю, это как-то связано с отрицанием - я все еще склоняю голову к отрицанию в Прологе ...