Можно ли установить домен переменной как перечисление имен в 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.