Ответ в теме: Логическая задача на Prolog: Порядок фигур

      Комментарии к записи Ответ в теме: Логическая задача на Prolog: Порядок фигур отключены
#2844

Проблема в том, что вторым аргументом функции divide_list является список списков, заданных первым аргументом:
divide_list(Part, [Part]):-!.
Если Part – это список_предметов, то [Part] – это список с элементами типа список_предметов.
Т.е. в раздел domains добавьте:
список_списков_предметов = список_предметов*
и в разделе predicates замените тип:
nondeterm divide_list(список_предметов, список_списков_предметов)

Вторая ошибка возникала в точке вызова предиката, т.к. сам предикат не был скомпилирован из-за ошибки. Теперь обе ошибки должны исправиться, попробуйте.

Кстати, я бы не советовал писать код на русском языке, т.к. возможен ряд проблем:

  • вы, наверняка знаете, про отображение символов в виде абракадабры. Это можно исправить сменой шрифта, не всегда. На wine (под linux) это сделать не получается – даже при успешной замене кодировки в редакторе, абракадабра отображается в окне вашей программы после запуска;
  • очень часто встречаются ошибки, когда вместо кириллической буквы “o” напишут латинскую и наоборот. Особенную боль эта ошибка доставляет если случается в разделе domains;
  • аналогично предыдущей проблеме, но еще хуже – если вы копируете код с сайтов и он на кириллице, то иногда символы могут оказаться в разных кодировках (.win1251 и UTF-8). В Visual Prolog найти ошибку при этом вообще нереально, файл надо открывать в другом редакторе – типа kate или gedit.

Я просто не понимаю зачем создавать себе лишние проблемы с этой кириллицей.