作为我最后一个问题的后续问题(感谢帕特里克),
我有一个像这样的变量列表,它是谓词的输出to_var_list(InputList, X)
:
X = [_G1426, _G1429, _G1432, 9, _G1438, _G1441].
现在我想将列表拆分为“9”,所以结果应该是这样的:
Result = [[_G1426, _G1429, _G1432],[_G1438, _G1441]].
我正在使用这样的谓词:
split(List, Pivot, Result) :-
(append(Left, [Pivot|Rest], List)
-> Result = [Left|Right],
split(Rest,Pivot,Right);
Result = [List]).
但这仅适用于不是变量列表的列表,例如:
Y = [1,2,6,9,6,5,9,7,1]
如果将枢轴设置为“9”,则列表将被拆分为
Result = [[1,2,6],[6,5],[7,1]]
但是对于上面的变量列表,应用此谓词将自动将每个无界变量绑定到枢轴,输出列表如下:
X = [9,9,9,9,9,9]
Result = [[],[],[],[],[],[],[]]
我知道我可以先拆分它们然后应用to_var_list
,但是原始列表中保留的关系X
丢失了。我需要建立一个约束模型,以便稍后我可以处理列表中的每个变量(比如设置每个变量的范围),最后能够给出 list 的修复结果X
。
有没有办法在拆分时避免将枢轴绑定到变量?