Как создать список динамически и установить его значение - PullRequest
0 голосов
/ 10 апреля 2011

например, если N равно 2, будет создан следующий список и установлено его значение

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

если N равно 3, он создаст список и установит его значение

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

Большое спасибо:)

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

Чтобы составить список длиной N, используйте length/2 с переменной в качестве первого аргумента:

1 ?- N=4, length(List,N).
N = 4,
List = [_G487, _G490, _G493, _G496].
0 голосов
/ 10 апреля 2011

Вы ищете что-то вроде

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|...]].
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...