gpt4 book ai didi

prolog - 列表不等式约束

转载 作者:行者123 更新时间:2023-12-04 01:52:06 25 4
gpt4 key购买 nike

我正在尝试编写一个 Prolog (CLP) 谓词,该谓词将构建一个约束两个列表不等式的约束。

更正式地说,有两个列表 A=[A1,...,AN], B=[B1,...,BN]约束定义为 (A1 #\= B1) #\/ (A2 #\= B2) #\/ ... #\/ (AN #\= BN) .

给定两个任意长度的列表,我不确定如何构建此约束。这是我的尝试。我明白为什么它不起作用,但无法修复它。

any_different([], []).
any_different([H1|T1], [H2|T2]):-
H1 #\= H2 #\/ any_different(T1, T2).

最佳答案

您需要建立析取并通过第三个参数返回它:

any_different([], [], V) :-
V #= 0. % no differences between [] and []
any_different([H1|T1], [H2|T2], Disj) :-
any_different(T1, T2, Disj0),
Disj #<==> (H1 #\= H2) #\/ Disj0.

现在,调用 any_different(List1, List2, AnyDiff)约束一个变量 AnyDiff您可以将其与其他变量一起传递给标签谓词。通过声明 AnyDiff #= 0你可以约束 List1List2相等,而 AnyDiff #= 1会导致他们不平等。

关于prolog - 列表不等式约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14002112/

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