কম্পিউটার

জাভাস্ক্রিপ্টে শত্রুকে হত্যা করা


সমস্যা

ধরুন, আমাদের একটি 2D গ্রিড আছে, প্রতিটি সেল হয় একটি প্রাচীর 'W', একটি শত্রু 'E' বা খালি '0' (সংখ্যা শূন্য)। আমাদের এমন একটি ফাংশন লিখতে হবে যা শুধুমাত্র একটি বোমা ব্যবহার করে আমরা সর্বাধিক শত্রুদের হত্যা করতে পারি।

বোমাটি লাগানো বিন্দু থেকে একই সারি এবং কলামে থাকা সমস্ত শত্রুদের হত্যা করে যতক্ষণ না এটি দেয়ালে আঘাত না করে কারণ প্রাচীরটি ধ্বংস হওয়ার মতো শক্তিশালী।

আমাদের আরও মনে রাখতে হবে যে আমরা কেবল একটি খালি ঘরে বোমা রাখতে পারি। উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −

const arr = [
   ['0', 'E', '0', '0'],
   ['E', '0', 'W', 'E'],
   ['0', 'E', '0', '0']
];

তারপর আউটপুট −

হওয়া উচিত
const output = 3;

আউটপুট ব্যাখ্যা:

[1,1] এ বোমা রাখলে ৩ জন শত্রুকে মেরে ফেলবে যা সর্বোচ্চ।

উদাহরণ

এর জন্য কোড হবে −

const arr = [
   ['0', 'E', '0', '0'],
   ['E', '0', 'W', 'E'],
   ['0', 'E', '0', '0']
];
const killEnemy = (arr = []) => {
   let m = arr.length;
   let n = m > 0 ? arr[0].length : 0;
   let result = 0, rows = 0;
   const cols = [];
   for (let i = 0; i < m; ++i) {
      for (let j = 0; j < n; ++j) {
         if (j === 0 || arr[i][j-1] === 'W') {
            rows = 0;
            for (let k = j; k < n && arr[i][k] != 'W'; ++k)
            if (arr[i][k] === 'E')
            rows += 1;
         }
         if (i === 0 || arr[i-1][j] === 'W') {
            cols[j] = 0;
            for (let k = i; k < m && arr[k][j] != 'W'; ++k)
               if (arr[k][j] === 'E')
                  cols[j] += 1;
         }
         if (arr[i][j] === '0' && rows + cols[j] > result)
         result = rows + cols[j];
      }
   }
   return result;
};
console.log(killEnemy(arr));

আউটপুট

এবং কনসোলে আউটপুট হবে −

3

  1. জাভাস্ক্রিপ্ট চলুন

  2. জাভাস্ক্রিপ্ট র্যান্ডম

  3. জাভাস্ক্রিপ্ট প্রতিশ্রুতি

  4. জাভাস্ক্রিপ্ট দুর্বল সেট