- 集合論に基づいた言語を作りたい
668 :1[sage]:2014/10/31(金) 20:03:03.95 ID:g6D744er - prologのconnect4がどうしても動かん。
誰か俺のコードをデバッグしてくれ。現状のコードは以下。 get_atでリストのN番目の要素を返す。 get_stoneでBOARDの(X,Y)の位置にある石を返す。盤の外を指定したときは3を返す。 straightで連続した石の数を数える。DX,DYは連続した石を探索する方向。 board([[],[],[],[],[],[],[]]). myboard([[1,2],[1,1],[1,1,1],[1,1,1,2],[],[],[1,2,1]]). get_at(_,[],_):- fail. get_at(0,[X|_],X). get_at(N,[_|Ls],Y):- N1 is N -1, get_at(N1,Ls,Y). get_stone(_,X,_,3):- X<0,!. get_stone(_,X,_,3):- 6<X,!. get_stone(_,_,Y,3):- Y<0,!. get_stone(BOARD,X,Y,0):- get_at(X,BOARD,Xs), length(Xs,L), Y >= L,!. get_stone(BOARD,X,Y,S):- get_at(X,BOARD,Xs), get_at(Y,Xs,S),!. straight(BOARD,X,Y,_,_,S,0):- get_stone(BOARD,X,Y,S1), S1 \== S,!. straight(BOARD,X,Y,DX,DY,Stn,Len):- X1 is X + DX, Y1 is Y + DY, Len1 is Len + 1, straight(BOARD,X1,Y1,DX,DY,Stn,Len1),!.
| - 【論理】Prolog【初心者】
783 :デフォルトの名無しさん[sage]:2014/10/31(金) 21:05:44.19 ID:g6D744er - すいません。教えてください。
prologでconnect4のルールを実装しようとしています。 connect4はこことかで遊べます。 http://www.connectfour.org/connect-4-online.php 途中までコードを書いたのですが上手く動いてくれません。 私のコードをデバッグしてもらえないでしょうか。
| - 【論理】Prolog【初心者】
784 :783[sage]:2014/10/31(金) 21:07:15.47 ID:g6D744er - 二重リストで盤面を表す。
get_atでリストのN番目の要素を返す。 get_stoneでBOARDの(X,Y)の位置にある石を返す。盤の外を指定したときは3を返す。 straightで連続した石の数を数える。DX,DYは連続した石を探索する方向。 よろしくお願いします。 board([[],[],[],[],[],[],[]]). myboard([[1,2],[1,1],[1,1,1],[1,1,1,2],[],[],[1,2,1]]). get_at(_,[],_):- fail. get_at(0,[X|_],X). get_at(N,[_|Ls],Y):- N1 is N -1, get_at(N1,Ls,Y). get_stone(_,X,_,3):- X<0,!. get_stone(_,X,_,3):- 6<X,!. get_stone(_,_,Y,3):- Y<0,!. get_stone(BOARD,X,Y,0):- get_at(X,BOARD,Xs), length(Xs,L), Y >= L,!. get_stone(BOARD,X,Y,S):- get_at(X,BOARD,Xs), get_at(Y,Xs,S),!. straight(BOARD,X,Y,_,_,S,0):- get_stone(BOARD,X,Y,S1), S1 \== S,!. straight(BOARD,X,Y,DX,DY,Stn,Len):- X1 is X + DX, Y1 is Y + DY, Len1 is Len + 1, straight(BOARD,X1,Y1,DX,DY,Stn,Len1),!.
|
|