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

licensed under cc by-sa 3.0 with attribution.