このディレクトリの索引

# http://pc12.2ch.net/test/read.cgi/tech/1244449887/879
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9519.txt
% 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).