【問題】8パズル 問1
会社でjs勉強会的なものが開かれたので8パズルの問題を作りました。
8パズルとはこうゆうやつです。
canvasでパズルゲーム
今回の問題はシャッフルはせずにパネルを動かすところだけです。
よかったらやってみてください。
TODOを実装し、想定する出力にせよ。
<!DOCTYPE html> <script> /** * パネルをクリックする * クリックした位置が移動可能であれば、移動後のパネル(配列)を返す。 * クリックした位置が移動不可であれば、そのままのパネルを返す。 * * @param ary2d {number[][]} 8パズルのパネルを表す配列。空の場所には0が入る。ary2d[y][x]なことに気をつけよう。 * @param x {number} x座標。ゼロオリジン。 * @param y {number} y座標。ゼロオリジン。 * @return {number[][]} 変更後のパネル */ function clickPannel(ary2d, x, y) { // TODO: 実装する } // パネルの初期状態 var ary2d = [ [0, 1, 2], [3, 4, 5], [6, 7, 8] ]; // 移動可能な場合に、移動することの確認 var result = clickPannel(ary2d, 1, 0); console.log(result); /* 出力:1が左に移動する [ [1, 0, 2], [3, 4, 5], [6, 7, 8] ] */ // イミュータブルの確認 console.log(ary2d); /* 出力:元のまま [ [0, 1, 2], [3, 4, 5], [6, 7, 8] ] */ // 移動不可の場合、そのまま返すことの確認 var result = clickPannel(ary2d, 2, 0); console.log(result); /* 出力:変化無し [ [0, 1, 2], [3, 4, 5], [6, 7, 8] ] */ </script>