所以我一直在尝试自学 prolog,我认为我做得很好。但是,我有点坚持我正在尝试制作的这种方法。
toN(N,A) A 等于 0 到 N-1 之间的整数值,按升序生成。
所以
toN(5,A) 将是
A = 0;
A = 1;
A = 2;
A = 3;
A = 4.
我还是 prolog 的新手,所以我不确定如何使用多个值来做到这一点。我有这样的事情:
toN(N,A) :- 0 < N, Nx is N-1, toN(Nx,A).
toN(N,A) :- 0 =< N, Nx is N-1, A = Nx.
然而,这只是返回false。没有其他的。对我来说似乎很好
最佳答案
检查您使用的 Prolog 实现是否支持 clpfd !
:- use_module(library(clpfd)).
toN/2
的实现变得声明式和 super 简洁:toN(N,A) :-
A #>= 0,
A #< N,
labeling([up],[A]).
您将在 clpfd 手册中找到更多标签选项: SWI-Prolog clpfd 、 SICStus Prolog clpfd 。
关于algorithm - 介于 0 和数字序言之间的变量的多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30113105/