09/06/23 07:00:07
>>279
% Prolog
t279(M,N,StartX,StartY,_壁衝突回数,_ポケットX,_ポケットY) :-
t279(M,N,StartX,StartY,1,1,0,_壁衝突回数,_ポケットX,_ポケットY),!.
t279(M,N,X,Y,_,_,Count,Count,X,Y) :-
member([X,Y],[[M,0],[0,N],[N,0],[M,N]]),!.
t279(M,N,X1,Y1,VX,VY,Count1,Count,X,Y) :-
member(X1,[0,M]),
VX1 is (-1) * VX,
Count2 is Count1 + 1,
X2 is X1 + VX1,
Y2 is Y1 + VY,
t279(M,N,X2,Y2,VX1,VY,Count2,Count,X,Y).
t279(M,N,X1,0,VX,VY,Count1,Count,X,Y) :-
member(Y1,[0,N]),
VY1 is (-1) * VY,
Count2 is Count + 1,
X2 is X1 + VX,
Y2 is Y1 + VY1,
t279(M,N,X2,Y2,VX,VY1,Count2,Count,X,Y).
t279(M,N,X1,Y1,VX,VY,Count1,Count,X,Y) :-
X2 is X1 + VX,
Y2 is Y1 + VY,
t279(M,N,X2,Y2,VX,VY,Count1,Count2,X,Y).