gpt4 book ai didi

prolog - 理解序言[列表]

转载 作者:行者123 更新时间:2023-12-02 04:41:18 25 4
gpt4 key购买 nike

我要编写一个程序来执行此操作:

?- pLeap(2,5,X,Y).
X = 2,
Y = 3 ;
X = 3,
Y = 4 ;
X = 4,
Y = 5 ;
X = 5,
Y = 5 ;
false.

(给出 2 到 5 之间的所有 X,X+1 对,加上最后的特殊情况)。

这应该是解决方案。我不太明白它是如何工作的,有人可以指导我吗?

pLeap(X,X,X,X).
pLeap(L,H,X,Y) :-
L<H,
X is L,
Y is X+1.
pLeap(L,H,X,Y) :-
L=<H,
L1 is L+1,
pLeap(L1,H,X,Y).

我会这样做:

pLeap(L,H,X,Y) :-
X >= L,
X =< H,
Y is X+1.

为什么它不起作用(忽略最后的特殊情况)?

最佳答案

您可以使用库 clpfd 来解决您的问题。

:- use_module(library(clpfd)).

pLeap(L,H,X,Y) :-
X in L..H,
Y #= min(H, X+1),
label([X]).

这是输出:

 ?- pLeap(2,5,X,Y).
X = 2,
Y = 3 ;
X = 3,
Y = 4 ;
X = 4,
Y = 5 ;
X = 5,
Y = 5.

关于prolog - 理解序言[列表],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723940/

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