Можно ли установить домен переменной как перечисление имен в clpfd?

Я могу указать домен переменной следующим образом:

MyVar in 1..10

или же

MyVar in {1,10,15}

но у меня есть переменная, которую я хотел бы указать так:

Activity_1__room in {room_1, room_2}  % i.e. as atoms not as integers

Возможно ли это сделать? Конечно, можно закодировать имена в целые числа, но действительно ли это необходимо?

1 ответ

Решение

Вы не можете использовать атомы. Домены в CLPFD располагаются над целыми числами.

Но предположим, что вы хотите сказать "MyVar должен принимать одно из значений списка L", то есть набор не известен априори. Это может быть закодировано как:

?- list_to_fdset(L, Set),
   MyVar in_set Set.
Другие вопросы по тегам