2014-02-19 48 views
2

我是新来的prolog。我有一个问题:输入矩阵,并乘上矩阵4. 这里我的代码:Prolog - 用数字相乘矩阵

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

,因为你代表一个矩阵列表的列表,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]]. 
+0

TKSü这么多简单的方法:) – hungduong