Một loại virus zombie khó chịu đang lây lan trong các thành phố kỹ thuật số. Chúng tôi làm việc tại CDC kỹ thuật số và công việc của chúng tôi là xem qua bản đồ thành phố và cho biết khu vực nào bị nhiễm virus zombie để quân đội kỹ thuật số biết nơi thả bom.
Chúng là loại thây ma kỹ thuật số mới chỉ có thể di chuyển theo hướng dọc và ngang và chỉ lây nhiễm cho những con số giống chúng.
Chúng tôi sẽ cung cấp một mảng hai chiều với các số trong đó.
Vì một lý do bí ẩn nào đó, bệnh nhân số 0 luôn được tìm thấy ở khu vực phía tây bắc của thành phố (phần tử [0] [0] của ma trận) và bệnh dịch lây lan từ đó sang các ô khác bằng cách di chuyển sang trái, phải, lên hoặc xuống.
Chúng ta phải tạo một hàm trả về một bản đồ (mảng 2 chiều) với tất cả các khu vực bị ô nhiễm được đánh dấu là 1 và không có vi rút được đánh dấu là 0.
Nói cách khác, chúng ta phải tìm tất cả các phần tử ma trận có cùng giá trị với [0] [0] mà chúng ta có thể đi tới bằng cách chỉ di chuyển xuống, lên, sang phải hoặc sang trái từ [0] [0] - mà không đi vào trường lưu trữ bất kỳ giá trị nào khác.
Ví dụ
Sau đây là mã -
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 Cơ hội =([i, j]) => {if (! tree [i] ||! tree [i] [j]) return; kết quả [i] [j] =1; var temp =tree [i] [j]; tree [i] [j] =không xác định; temp.forEach (cơ hội); } for (i =0; iarr [x] &&arr [x] [y] ===xác sống); }; }; cơ hội ([0, 0]); trả về kết quả;}; console.log (findZombies (arr));
Điều này sẽ tạo ra kết quả sau trên bảng điều khiển -
[[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]]