09/06/05 17:56:46
>>99
% Prolog (1/2)
可能経路数(_桝,_開始点_X,_開始点_Y,_経路の数) :-
findall(1,駒の動き(_開始点_X,_開始点_Y,_),L),
length(L,_経路の数).
駒の動き(_桝,_開始点_X,_開始点_Y,_経路) :-
駒の動き(_桝,_開始点_X,_開始点_Y,[[_開始点_X,_開始点_Y]],_経路).
駒の動き(_桝,X,Y,L,_経路) :-
移動可能点(_桝,X,Y,X2,Y2),
not(member([X2,Y2],L)),
駒の動き(_桝,X2,Y2,[[X2,Y2]|L],_経路).
駒の動き(_桝,X,Y,L,_経路) :-
_桝2 is _桝 * _桝,
list_length(L,_桝2),
reverse(L,_経路).