10/07/07 07:32:53
>>269
% Prolog Q1
'4つの整数を入力し、それらを要素とする行列を求め、行列とその値を表示する' :-
get_split_line([' ',','],[A,B,C,D]),
正方行列の行列式の値([[A,B],[C,D]],_行列式の値),
write_formatted(' |%3d %3d| = %t\n',[A,B,_行列式の値]),
write_formatted(' |%3d %3d|\n',[C,D]).
正方行列の行列式の値(_正方行列,_行列式の値) :-
ガウス行列に変形(_正方行列,X,Y),
'行列式|C|の値'(X,Z1),
ならびの積(Y,Z2),
_行列式の値 is Z1 // Z2.
ならびの積([A],A) :- !.
ならびの積([A|R],X) :-
ならびの積(R,Y),
X is A * Y.
'行列式|C|の値'(_行列,_値) :-
length(_行列,Len),
findall(U,(for(1,N,Len),list_nth(N,_行列,_行),list_nth(N,_行,U)),L),
ならびの積(L,_値).