একটি ভয়াবহ জম্বি ভাইরাস ডিজিটাল সিটিতে ছড়িয়ে পড়ছে। আমরা ডিজিটাল CDC-তে কাজ করি এবং আমাদের কাজ হল সিটি ম্যাপ দেখে বলে দাও কোন এলাকাগুলো জম্বি ভাইরাস দ্বারা সংক্রামিত হয়েছে যাতে ডিজিটাল আর্মি জানতে পারে কোথায় বোমা ফেলবে।
এরা এক নতুন ধরনের ডিজিটাল জম্বি যারা শুধু ভertetিক্যাল এবং হরিজন্টাল দিকেও যেতে পারে এবং শুধু তাদের মতো সংখ্যাকেই সংক্রামিত করতে পারে।
আমাদের একটি টু-ডাইমেনশনাল অ্যারে দেওয়া হবে যাতে সংখ্যাগুলো থাকবে।
কোনো রহস্যময় কারণের জন্য পেশেন্ট জিরো সবসময় সিটির উত্তর-পশ্চিম এলাকাএ (ম্যাট্রিক্সের element [0][0]) পাওয়া যায় এবং প্লেগটি সেখান থেকে অন্যান্য সেলে ছড়ায় যাওয়া শুরু করে, ডান, বাম, উপরে বা নিচে যেতে পারে।
আমাদের একটি ফাংশন তৈরি করতে হবে যা একটি ম্যাপ (২-ডাইমেনশনাল অ্যারে) রিটার্ন করবে যেখানে সংক্রামিত এলাকাগুলো ১ এবং ভাইরাস-মুক্ত এলাকাগুলো ০ দিয়ে মার্ক করা থাকবে।
অন্য কথায়, আমাদের ম্যাট্রিক্সের সকল উপাদান খুঁজে বের করতে হবে যাদের মান [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 ]
]