前提・実現したいこと
(Javascript)将棋のコマとして「銅」というコマを新しく考える.このコマは斜め左上,下,右のいずれかに一マス移動することができる.今,大きさn x n の将棋盤の適当な位置から銅がスタートして,この将棋盤のすべてのマスをちょうど一回だけ訪れる回り方を求めることにする.銅はスタートした位置に戻ってくる必要はない.
このような条件を満たすときマスの番号を順に入れた配列の配列を返すような関数 bronze(n) を定義せよ.
マスの番号は0からn^2 - 1とし,左上から順に横方向にスキャンしながら番号付けし,右下で終わるようにせよ.
javascript
1function bronze(n) 2{ 3 4 var LEFTUP = 0 5 var RIGHT = 1 6 var DOWN = 2 7 8 function make_masu(n) 9 { 10 var state = [] 11 var i 12 for(i = 0;i < n * n;i++) state[i] = 0 13 14 return state 15 } 16 17 function move(state,now,move) 18 { 19 var now_x = now % n 20 var now_y = Math.floor(now / n) 21 22 if (move == DOWN && now_y > n - 1){ 23 state[now + n] = 1 24 now = now + n 25 } else if (move == LEFTUP && 0 < now_y && 0 < now_x){ 26 state[now - n - 1] = 1 27 now = now - n - 1 28 } else if (move == RIGHT && now_x < n - 1){ 29 state[now + 1] = 1 30 now = now + 1 31 } 32 return state 33 } 34 function next_move(state,now) 35 { 36 37 } 38 function search(start) 39 { 40 41 } 42}
マスの状態をstateで与えてstateが1の場所は一度訪れたことがある場所という感じで考えているのですが,探索の仕方のアイデアが思いつかないです。
回答4件
あなたの回答
tips
プレビュー