Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Prolog > Фермер, волк, козел, капуста |
Автор: Ak47black 17.10.2010, 13:16 | ||||
Здравствуйте. Есть полностью рабочий код, но чувствую что не до конца его понимаю
Трудно выразить что именно мне непонятно поэтому, попробую описать ход своей мысли
Может как-то кто-то может подсказать, вывести меня на истинное понимание этого примера? Добавлено @ 13:18 Пример я сам взял http://www.mari.ru/mmlab/home/prolog/LECTION6/index.html если что. |
Автор: Nevidimko 17.10.2010, 22:30 |
go(_,_). - для того чтобы выйти из отката fail во втором правиле. Без него ты увидишь No, и правило будет считаться невыполненным В path мне тоже кажется что L - путь. В path берется один вариант пути, проверяются условия и есть он подходит то дальнейший поиск решений не происходит, результат красиво выводится на экран (nl,write('A solution is:'),nl,write_path(L)). Вот тут в правиле path предикат fail отправляется искать следующее истинное решение... |
Автор: Ak47black 18.10.2010, 10:54 |
А как выполняется move(S,S1) (13 строка) ? Я вот смотрю сейчас в данный момент, пытаюсь понять. Но что-то никак немогу представить выполнение. |
Автор: Ak47black 18.10.2010, 14:08 |
А S1 откуда там берёться? ![]() |
Автор: Фантом 18.10.2010, 17:40 |
Так именно она и меняется при передоказывании, система просто подставляет в нее все возможные варианты по очереди. |
Автор: Ak47black 18.10.2010, 19:12 |
А, понятно...... Вообщем я вроде-бы теперь понимаю что к чему Фантом, Спасибо |