所以我一直在尝试自学 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 clpfdSICStus Prolog clpfd

关于algorithm - 介于 0 和数字序言之间的变量的多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30113105/

10-11 22:04