Задача о волке, козе и капусте

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 3 года/лет, 3 мес. назад.

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
  • Автор
    Сообщения
  • #1848

    questioner
    Участник

    Разбираюсь с приведенным вами решением задачи о волке, козе и капусте.
    Не нашёл полного кода рабочей программы. Попытался собрать по кускам. Получаю ошибку:

    ?-  path(([wolf,goat,cabbage],[],left),([],_,right)).
    ERROR: Undefined procedure: edge/2
       Exception: (8) generate([wolf, goat, cabbage], [], left)

    Не могу понять, как нужно определить edge применительно к задаче о волке козе и капусте.

    #1849

    Edge — это не правило, его не надо определять. В статье написано откуда появляются дуги — их добавляет функция proliferate. Более детально это описано в статье, посвященной обходам графа на Prolog.
    Дуга добавляется при помощи стандартного предиката assert, но чтобы этот предикат мог сработать, она предварительно должна быть объявлена динамической.
    :- dynamic edge/2.

    Добавьте это в самое начало программы. Без такого объявления машина логического вывода пробует найти функцию edge, которой не существует (об этом и написано в сообщении компилятора).

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)

Для ответа в этой теме необходимо авторизоваться.