gpt4 book ai didi

序言 : Enumerate All Elements of Countably Infinite Results

转载 作者:行者123 更新时间:2023-12-02 17:24:09 25 4
gpt4 key购买 nike

是否有任何 prolog 实现能够枚举可数无限结果的所有元素?

让我们考虑枚举所有自然数对。如果我们按顺序枚举对 {(0,0), (0,1), (1,0), (0,2), (1,1), (2,0), ...},我们可以枚举所有对。然而,如果我们像下面的 GNU prolog 程序一样按照 {(0,0), (0,1), (0,2), (0,3) ...} 的顺序枚举对,我们永远不会达到诸如 ( 1,1)。

% cat nats.pl
nat(0).
nat(X1) :- nat(X), X1 is X + 1.

pair_of_nats(X, Y) :- nat(X), nat(Y).
% prolog
GNU Prolog 1.3.0
By Daniel Diaz
Copyright (C) 1999-2007 Daniel Diaz
| ?- ['nats.pl'].
compiling /home/egi/prolog/nats.pl for byte code...
/home/egi/prolog/nats.pl compiled, 4 lines read - 762 bytes written, 9 ms

yes
| ?- pair_of_nats(X,Y).

X = 0
Y = 0 ? ;

X = 0
Y = 1 ? ;

X = 0
Y = 2 ? ;

X = 0
Y = 3 ?

最佳答案

我首先认为 CappeliCs 解决方案很好。但接下来看看潜伏者
CLP(FD)解决方案,我认为以下是完整的Prolog解决方案:

?- between(0, inf, X), between(0, X, A), B is X-A.

再见

P.S.:以下是在 SWI-Prolog 中运行的示例:

Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.1.33)
Copyright (c) 1990-2015 University of Amsterdam, VU Amsterdam
?- [user].
pair((A, B)) :-
between(0, inf, X),
between(0, X, A),
B is X-A.

?- pair(P).
P = (0, 0) ;
P = (0, 1) ;
P = (1, 0) ;
P = (0, 2) ;
P = (1, 1) ;
P = (2, 0) ;
...

关于序言 : Enumerate All Elements of Countably Infinite Results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28424732/

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