如何将特定范围内的数字附加到prolog中的列表中

时间:2015-12-22 06:11:06

标签: list prolog append visual-prolog

我试图将一些数字附加到列表中,这些数字的范围是XY,其中X是下限,Y是上限,然后将这些生成的数字保存到列表中。 我试过这个:

domains
    list=integer*.

predicates
    nondeterm generate(integer,integer,list).
    nondeterm append(integer,list,list).

clauses
    append(X,[],[X]).   
    generate(0,0,[]).
    generate(X,X,[]) :-
            write("The Upper And Lower Numbers Are The Same\n").
    generate(X,Y,[X|T]) :-
            X<=Y,
            N=X+1,
            A=N+1,
            append(N,T,Z),
            generate(A,Y,Z).

goal
    generate(1,4,Result).   

但是,当我测试目标时,它给了我&#34;没有解决方案&#34;。 我究竟做错了什么? 非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

试试这个:

?= findall(X,between(1,4,X),L).
L = [1, 2, 3, 4].

再见

P.S。:对于/ 3之间的纯实现,请参见:
http://www.jekejeke.ch/idatab/doclet/blog/docs/05_run/05_frequent/advanced/arith.html