一連の変数がT_1, T_2, ..., T_N
あり、CLPFD で次の疑似コードを書き直したいと思います。
T_1 in 0..59,
T_2 in 0..59,
...
T_n in 0..59,
all_different([T_1, T_2, ..., T_n]),
FOREACH x in 0 to 59 do:
IF (x \in [T_1, T_2, T_3, ..., T_n]) THEN
Slot_x = 1
ELSE
Slot_x = 0
ENDFOREACH
どうやってやるの?
私はcountを使用します:
T_1 in 0..59,
T_2 in 0..59,
...
count(0, [T_1, T_2, ..., T_n], #=, Slot_0) % The number 0 can be at most once in the list
count(1, [T_1, T_2, ..., T_n], #=, Slot_1) % The number 1 can be at most once in the list
...
しかし、より経験豊富なプログラマーはこのように記述しないと思います。