Prolog 中的 Münchausen 数,如何加快速度?

问题描述 投票:0回答:0

这段代码给了我一些Münchhausen Numbers,
不幸的是只使用

0^0 = 0
约定:

digits(0, P, Q, R) :- !, P = Q, R = P.
digits(N, P, Q, R) :-
   M is N-1,
   between(0, 9, D),
   S is P*10+D,
   (D = 0 -> T = Q; T is Q+D^D),
   digits(M, S, T, R).

我在 SWI-Prolog 中得到以下结果:

?- digits(4, 0, 0, R).
R = 0 ;
R = 1 ;
R = 3435 ;
false.

以上搜索区间

[0,10^4-1]
。怎么样
我可以在短时间内搜索间隔
[0,10^10-1]
吗?

prolog combinatorics
© www.soinside.com 2019 - 2024. All rights reserved.