如何在 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).
重用你的代码和你的想法。
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]].