gpt4 book ai didi

Prolog - 生成适合给定范围的数字

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

我想使用以下谓词:

range(X,0,5)
range(X,4,200)
range(X,-1000000,1000000)
dom_range(X,-1000000,1000000)

意义:
range(X,0,5) :- member(X,[0,1,2,3,4,5]).
range(X,4,200) :- member(X,[4,5,6...198,199,200]).
range(X,-1000000,1000000) :- member(X,[-1000000,...,1000000]).
dom_range(X,-1000000,1000000) :- domain(X, [-1000000,...,1000000]).

如何在 Prolog 中很好地编码(考虑解决方案性能 - 递归深度等)?

解决方案有望在 GNU-Prolog 上运行。

附言问题灵感来自 this question .

最佳答案

SWI-Prolog 有谓词 between/3 .所以你可以称之为 between(0,5,X) 以获得上面显示的结果。这个谓词看起来像是在 C 中实现的。

如果我们必须用纯 prolog 编写它(并且速度和空间不是一个因素),您可以尝试以下操作。

range(Low, Low, High).
range(Out,Low,High) :- NewLow is Low+1, range(Out, NewLow, High).

关于Prolog - 生成适合给定范围的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7175258/

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