09/06/16 10:26:32
>>187
% Prolog (1/2)
行列の積(L1,L2,X) :-
行列の転置(L,L2,L3),
行列の積の一(L1,L3,X).
行列の積の一([],_,[]) :- !.
行列の積の一([A|R1],L,[S1|R3]) :-
行列の積の二(A,L,S1),
行列の積の一(R1,L,R3).
行列の積の二(_,[],[]) :- !.
行列の積の二(A,[B|R2],[C|R3]) :-
行列の積の三(A,B,C),
行列の積の二(A,R2,R3).
行列の積の三([],[],0) :- !.
行列の積の三([A|R1],[B|R2],S) :-
S1 is A * B,
行列の積の三(R1,R2,S2),
S is S1 + S2 .