Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptを使用して迷路の終わりへのパスを見つける


問題

N*N次の行列をとるJavaScript関数を書く必要があります。マトリックスの壁は「W」でマークされ、空の位置は「_」でマークされます

いつでも4方向のいずれかに移動できます。関数は、最後に到達できる場合はtrueを返し、それ以外の場合はfalseを返す必要があります。

以下はコードです-

const maze = [
   ['_', 'W', 'W', 'W'],
   ['_', 'W', 'W', 'W'],
   ['W', '_', '_', 'W'],
   ['W', 'W', 'W', '_']
];
const canFindPath = (m = []) => {
   let h = m.length;
   let w = m[0].length;
   let queue = [[0, 0]];
   let mark = (xx, yy) => {
      [[1, 0], [-1, 0], [0, 1], [0, -1], [0, 0]].map(p => {
         let [x, y] = [p[0]+xx, p[1]+yy];
         if (0 <= x && x < w) {
            if (0 <= y && y < h) {
               if (m[y][x] === '.') {
                  m[y][x] = '#';
                  queue.push([x, y]);
               }
            }
         }
      });
   };
   do {
      let p = queue.shift();
      mark(...p);
   } while (queue.length);
   return m[h-1][w-1] !== '.';
};
console.log(canFindPath(maze));

出力

true

  1. JavaScriptを使用してアルファベットの文字の1ベースのインデックスを検索する

    問題 小文字の英語の英字を使用するJavaScript関数を作成する必要があります。この関数は、文字の1ベースのインデックスをアルファベットで返す必要があります。 例 以下はコードです- const char = 'j'; const findCharIndex = (char = '') => {    const legend = ' abcdefghijklmnopqrstuvwxyz';    if(!char || !legend.includes(char) || char.lengt

  2. JavaScriptを使用して配列内で最も頻繁に使用される単語を検索する

    問題 最初の引数として英語の小文字のアルファベットの文字列の配列arrを受け取るJavaScript関数を作成する必要があります。関数の2番目の引数は、数値num(num