gpt4 book ai didi

Prolog:将列表的元素限制在一个范围内

转载 作者:行者123 更新时间:2023-12-04 05:34:23 24 4
gpt4 key购买 nike

有什么方法可以将列表的元素限制在一个范围内,看起来更像是 1-6 , 而不是使用 between(1, 6, X) ?

最佳答案

clpfd图书馆,有一个 ins/2 谓词,您可以在其中指定 - 对于变量列表 - 元素的范围。

喜欢:

all_between(Low, High, Vars) :-
Vars ins Low..High.

打电话时 all_between(1,6,[X1,X2,X3]).我们得到:
X1 in 1..6,
X2 in 1..6,
X3 in 1..6.

如果我们想枚举元素,我们可以使用 label(L).同样,分配值:
all_between_enumerate(Low, High, Vars) :-
Vars ins Low..High,
label(Vars).

对于 all_between_enumerate(1,2,[X1,X2,X3]).这会产生:
?- all_between_enumerate(1,2,[X1,X2,X3]).
X1 = X2, X2 = X3, X3 = 1 ;
X1 = X2, X2 = 1,
X3 = 2 ;
X1 = X3, X3 = 1,
X2 = 2 ;
X1 = 1,
X2 = X3, X3 = 2 ;
X1 = 2,
X2 = X3, X3 = 1 ;
X1 = X3, X3 = 2,
X2 = 1 ;
X1 = X2, X2 = 2,
X3 = 1 ;
X1 = X2, X2 = X3, X3 = 2.

如果您已经为变量添加了约束,例如 X1 #< X3 ,这些也被考虑在内:
?- X1 #< X3, all_between_enumerate(1,2,[X1,X2,X3]).
X1 = X2, X2 = 1,
X3 = 2 ;
X1 = 1,
X3 = X2, X2 = 2.

关于Prolog:将列表的元素限制在一个范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46638910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com