【迷路5】https://twitter.com/puzzlegiver_bot/status/277296210212163584
課題:
・入口が左上(0,0)であることをルールに入れているのがイマイチ
・10秒待て!
・’;’ で別解を求めると同じ解が4回表示されてしまう。
【迷路5】https://twitter.com/puzzlegiver_bot/status/277296210212163584
課題:
・入口が左上(0,0)であることをルールに入れているのがイマイチ
・10秒待て!
・’;’ で別解を求めると同じ解が4回表示されてしまう。
append( [], List, List ).append( [Head|Tail], List, [Head|TailR] ) :- append(Tail, List, TailR).at( [Head|Tail], (0, Y), Val ) :- at(Head, Y, Val).at( [Head|Tail], (X, Y), Val ) :- X > 0, X1 is X - 1, at( Tail, (X1, Y), Val ).at( [Head|Tail], 0, Head ).at( [Head|Tail], Idx, Val ) :- number(Idx), Idx > 0, Idx1 is Idx - 1, at( Tail, Idx1, Val ).?- at( [[1,2,3],[4,5],[6,7]], (0,2), 3 ).% ルールwalk_maze(Q, A) :-Q = A,length(Q, M), Q = [H|_],length(H, N),walk_maze( Q, A, (M, N), (0, 0), 1 ). % 左上を入口として入るwalk_maze( _, _, (M, N), _, StepEnd ) :- StepEnd is M * N.walk_maze( Q, A, (M, N), (X, Y), Step ) :-% number(M), number(N), number(X), number(Y), number(Step),0 =< X, X < M, 0 =< Y, Y < N,at( Q, (X, Y), Step ),StepNext is Step + 1,( % 次の一歩X1 is X - 1, walk_maze( Q, A, (M, N), (X1, Y), StepNext );Y1 is Y - 1, walk_maze( Q, A, (M, N), (X, Y1), StepNext );X2 is X + 1, walk_maze( Q, A, (M, N), (X2, Y), StepNext );Y2 is Y + 1, walk_maze( Q, A, (M, N), (X, Y2), StepNext )).% 例題?- walk_maze( [[ 1, _, _, _, _, 36 ],[ _, _, _, _, _, _ ],[ _, _, _, _, _, _ ],[ _, 9, _,27, _, _ ],[ _,18, _, _, _, _ ],[ _, _, _, _, _, _ ] ], Answer )./*Answer = [[ 1, 2, 3, 4, 35, 36 ],[ 12, 11, 6, 5, 34, 33 ],[ 13, 10, 7, 28, 29, 32 ],[ 14, 9, 8, 27, 30, 31 ],[ 15, 18, 19, 26, 25, 24 ],[ 16, 17, 20, 21, 22, 23 ]]*/