如何动态创建List并设置其值

时间:2011-04-10 17:47:40

标签: prolog

例如,如果N为2,它将创建跟踪列表并设置其值

L = [S1,S2],
L :: 1..10.

如果N为3,它将列出以下列表并设置其值

L = [S1,S2,S3],
L :: 1..10.

非常感谢:)

2 个答案:

答案 0 :(得分:2)

要制作长度为N的列表,请使用带有变量的length/2作为第一个参数:

1 ?- N=4, length(List,N).
N = 4,
List = [_G487, _G490, _G493, _G496].

答案 1 :(得分:-1)

你在寻找类似smth的

吗?
list( N, List ) :-
    numlist( 1, N, List ).

制作

?- list(5, L).
L = [1, 2, 3, 4, 5].

或者什么?

UPD:

kal( N, Lists ) :- govna( N, [[]], [_ | Lists] ), !.
govna( 0, Ans, Ans ).
govna( N, List, Com ) :-
    numlist( 1, 10, X ),
    append( List, [X], ListNew ),
    NewN is N - 1,
    govna( NewN, ListNew, Com ).
这是吗?

?- kal(2, X).
X = [[1, 2, 3, 4, 5, 6, 7, 8|...], [1, 2, 3, 4, 5, 6, 7|...]].