0

Prolog で nxn マトリックスを作成する方法と、マトリックス内に n から 1 のリストがあります。生成リストのコーディングは作成できますが、nxn マトリックスの作成方法がわかりません。

make_num_list(N, List) :-
   make_list(N, List).

make_list(N, []) :-
   N =< 0,
   !.
make_list(N, [N|Rest]) :-
   N > 0,
   N2 is N - 1,
   make_list(N2, Rest).
4

2 に答える 2

1

コードとアイデアを再利用します。

make_num_matrix(N, Matrix) :-
    make_matrix(N, N, Matrix).

make_matrix(_, N, []) :-
    N =< 0,
    !.
make_matrix(M, N, [R|Rs]) :-
    make_list(M, R),
    N2 is N - 1,
    make_matrix(M, N2, Rs).

make_list(N, []) :-
    N =< 0,
    !.
make_list(N, [N|Rest]) :-
    N > 0,
    N2 is N - 1,
    make_list(N2, Rest).

?- make_num_matrix(4, M).
M = [[4, 3, 2, 1], [4, 3, 2, 1], [4, 3, 2, 1], [4, 3, 2, 1]].
于 2013-11-05T06:49:59.587 に答える
1

そこにあるほとんどの Prolog には/3の間があり、間違いなくfindall /3があるでしょう

make_matrix(N, M) :- findall(Ns, (between(1,N,_), make_list(N,Ns)), M).
于 2013-11-05T07:06:35.033 に答える