2014-02-19 70 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