Ответ в теме: Prolog. Задачи на следование

      Комментарии к записи Ответ в теме: Prolog. Задачи на следование отключены
#2519

Я думаю, что “скамейку” в задаче можно представить списком, а задача сводится к установлению соответствия элементов списка правилам размещения детей (см. раздел “логические задачи на установление соответствия“).

Вам нужно описать имена детей:

children(grisha).
children(vika).
children(serezha).
children(oleg).
children(luci).

Затем, вы сможете поместить их в список и используя механизм поиска с возвратами заставить интерпретатор prolog перебрать все варианты построения списка:

Bench = [A, B, C, D, E], 
children(A), children(B), children(C), children(D), children(E),
unique(Bench).

Тут используется предикат unique для генерации таких сочетаний детей, чтобы имена не повторялись.

Теперь остается лишь добавить правила расстановки детей:

C = grisha,
divide_list(Bench, [_,[serezha, vika, grisha], _]),
divide_list(Bench, [_,[oleg, luci], _]).

Для поиска подсписков тут используется функция divide_list.