如何在变量的域中指定值的自定义顺序?

时间:2013-06-05 14:25:47

标签: prolog clpfd sicstus-prolog

我们假设我有一个变量VV的值可以是范围0..5中的任意数字。但是,某些值比其他值更优选,因此它可以帮助我将V的域指定为有序序列。

我可以在SICStus Prolog中完成吗?

示例:

% PSEUDOCODE
%
% 3 is more preferred than 4; 4 is more preferred than 2; and so on..
% So I would write something like this: 

V in {3,4,2,5,1,0},
getDomainAsList(V, List), % the predicate do not exist
% and the List would be: [3,4,2,5,1,0] and not [1,2,3,4,5]

我阅读了手册,但没有找到任何有用的内容。我可以通过自定义标签来解决问题(例如,将V的域转换为列表,对其进行排序并将值分配给V)但我希望性能更差。

2 个答案:

答案 0 :(得分:3)

有一个手册页描述了这一点。

请参阅标记/ 2,here的值(枚举)选项:

答案 1 :(得分:2)

您可以按首选顺序拥有所有值的数组或列表。

然后在程序中使用数组索引,最后返回与索引对应的值。