Пролог: поиск всех решений

Название может выглядеть так, будто это десятка, но это не так. Цель этой программы - взять эти классы (потребности)

needs([[ece2090,1,m,13,16],
[ece3520,1,tu,11,14],
[ece4420,1,w,13,16]].

и соедините их с ассистентами колледжа, у которых есть полномочия для преподавания в классе, и которые также бесплатны в течение этого времени (ресурсы; значение для дня, начала и окончания для ТА означает, что он в данный момент недоступен).

resources([[joel, [ece2090,ece2010,ece3520,ece4420],[[m,13,16]]],
 [sam, [ece2090,ece4420],[]],
[pete, [ece3520],[[w,13,16]]]].

В этой версии каждый ТА может принять только один класс. Я создал программу для этого, и решение ниже.

A = [[ece2090, 1, 'NONE'], [ece3520, 1, joel], [ece4420, 1, sam]] .

Это пары ТА для курсов. Как видите, один помечен как «нет». Однако, если вы посмотрите, вы увидите действительную конфигурацию, которая назначает все древовидные TA (Пит для ECE3520, Сэм для ECE2090 и Джоэл для ECE4420). Для целей следующего вопроса оба из них будут считаться решениями.

Как отобразить все решения? Findall, как правило, был бы подходящим вариантом, и наличие неизбежного условия сбоя также помогло бы, но вот главный момент: для пролога потребности и ресурсы - это только один экземпляр переменной вместо трех, потому что они являются матрицами. По этой причине прологу ничего не нужно отслеживать, если я заставлю его вернуться с помощью условия сбоя или findall

Так есть ли способ найти все решения? Можно ли как-нибудь взять все возможные варианты размещения матрицы и выбросить их все в программу?

Ответы на вопрос(0)

Ваш ответ на вопрос