我是初学者。我有一个问题:输入矩阵并将该矩阵乘以4。 这是我的代码:
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).
在Prolog:
1 ?- make_num_matrix(4,M).
结果:
M = [[4, 3, 2, 1], [4, 3, 2, 1], [4, 3, 2, 1], [4, 3, 2, 1]].
但我不知道如何将此矩阵(M)乘以4。 请帮我。谢谢!
答案 0 :(得分:0)
因为您将矩阵表示为列表列表,maplist / 3这是更简单的方法
multiply_matrix(I, N, O) :- maplist(multiply_list(N), I, O).
multiply_list(N, I, O) :- maplist(multiply(N), I, O).
multiply(N, I, O) :- O is I * N.
?- make_num_matrix(4,M),multiply_matrix(M,4,R).
M = [[4, 3, 2, 1], [4, 3, 2, 1], [4, 3, 2, 1], [4, 3, 2, 1]],
R = [[16, 12, 8, 4], [16, 12, 8, 4], [16, 12, 8, 4], [16, 12, 8, 4]].