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

ゾンビの黙示録のケーススタディ-JavaScript


厄介なゾンビウイルスがデジタル都市に広がっています。私たちはデジタルCDCで働いており、私たちの仕事は都市地図を調べて、ゾンビウイルスで汚染されている地域を特定し、デジタル軍が爆弾をどこに投下するかを知ることです。

それらは、垂直方向と水平方向にのみ移動でき、それらと同じ数だけに感染することができる新しい種類のデジタルゾンビです。

数字が入った2次元配列が与えられます。

いくつかの不思議な理由で、患者ゼロは常に都市の北西エリア(マトリックスの要素[0] [0])で見つかり、ペストはそこから左、右、上、または下に移動することによって他のセルに広がります。

>

汚染されたすべての領域を1とマークし、ウイルスのない領域を0とマークしたマップ(2次元配列)を返す関数を作成する必要があります。

言い換えると、[0] [0]から下、上、右、または左に移動するだけで移動できる、[0][0]と同じ値を持つすべての行列要素を見つける必要があります。その他の値を格納するフィールド。

以下はコードです-

const arr = [
   [9, 1, 2, 3, 4, 1, 2, 9],
   [9, 9, 9, 2, 1, 5, 9, 9],
   [9, 2, 9, 3, 7, 9, 1, 9],
   [6, 9, 9, 9, 0, 9, 2, 9],
   [5, 4, 3, 9, 9, 9, 4, 9],
   [9, 3, 9, 5, 8, 9, 9, 9],
   [9, 9, 9, 9, 9, 9, 7, 9],
   [9, 9, 1, 2, 3, 9, 8, 9]
];
const findZombies = arr => {
   let i, j, result = [],
   zombie = arr[0][0],
   tree = {};
   const chance = ([i, j]) => {
      if (!tree[i] || !tree[i][j]) return;
      result[i][j] = 1;
      var temp = tree[i][j];
      tree[i][j] = undefined;
      temp.forEach(chance);
   }
   for (i = 0; i < arr.length; i++) {
      result.push([]);
      for (j = 0; j < arr[i].length; j++) {
         result[i].push(0);
         if (arr[i][j] !== zombie) continue;
         if (!tree[i]) tree[i] = {};
         tree[i][j] = [[i, j - 1], [i, j + 1], [i - 1, j], [i + 1, j]].filter(([x, y]) => arr[x] && arr[x][y] === zombie);
      };
   };
   chance([0, 0]);
   return result;
};
console.log(findZombies(arr));

これにより、コンソールに次の出力が生成されます-

[
 [
   1, 0, 0, 0,
   0, 0, 0, 1
 ],
 [
   1, 1, 1, 0,
   0, 0, 1, 1
 ],
 [
   1, 0, 1, 0,
   0, 1, 0, 1
 ],
 [
   0, 1, 1, 1,
   0, 1, 0, 1
 ],
 [
   0, 0, 0, 1,
   1, 1, 0, 1
 ],
 [
   1, 0, 1, 0,
   0, 1, 1, 1
 ],
 [
   1, 1, 1, 1,
   1, 1, 0, 1
 ],
 [
   1, 1, 0, 0,
   0, 1, 0, 1
 ]
]

  1. JavaScriptのデバッガーステートメント

    JavaScriptのデバッガーステートメントは、コードにブレークポイントを設定するために使用されます。コードは、デバッガーステートメントに遭遇するとすぐに実行を停止し、デバッガー関数(使用可能な場合)を呼び出します。 以下は、JavaScriptでデバッガステートメントを実装するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" co

  2. JavaScriptのimage()オブジェクト。

    画像オブジェクトはHTML要素を表します。 以下はJavaScriptの画像オブジェクトのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> &