Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में दुश्मन को मारना

<घंटा/>

समस्या

मान लीजिए, हमारे पास 2D ग्रिड है, प्रत्येक सेल या तो एक दीवार 'W' है, एक दुश्मन 'E' या खाली '0' (संख्या शून्य)। हमें एक ऐसा फंक्शन लिखना होता है जो अधिकतम दुश्मनों को लौटाता है जिन्हें हम केवल एक बम का उपयोग करके मार सकते हैं।

बम सभी दुश्मनों को एक ही पंक्ति और स्तंभ में लगाए गए बिंदु से तब तक मारता है जब तक कि वह दीवार से नहीं टकराता क्योंकि दीवार इतनी मजबूत होती है कि उसे नष्ट नहीं किया जा सकता।

हमें यह भी ध्यान रखना होगा कि हम बम को खाली सेल में ही रख सकते हैं। उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -

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

तब आउटपुट होना चाहिए -

const output = 3;

आउटपुट स्पष्टीकरण:

[1,1] पर बम रखने से 3 शत्रु मारे जाएँगे जो सबसे अधिक है।

उदाहरण

इसके लिए कोड होगा -

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. जावास्क्रिप्ट रैंडम

    Math.random() फ़ंक्शन का उपयोग 0 और 1 के बीच एक यादृच्छिक फ़्लोटिंग-पॉइंट संख्या उत्पन्न करने के लिए किया जाता है। Math.random() फ़ंक्शन के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="

  1. जावास्क्रिप्ट वादे

    जावास्क्रिप्ट में वादे हमें अतुल्यकालिक संचालन करने की अनुमति देते हैं जहां मूल्य उन्नत में ज्ञात नहीं होता है जब वादा बनाया जा रहा था। एक वादे में तीन राज्य लंबित, पूरे और अस्वीकृत हो सकते हैं। जावास्क्रिप्ट में वादों के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en&q

  1. जावास्क्रिप्ट कमजोर सेट

    जावास्क्रिप्ट वीकसेट का उपयोग वस्तुओं के संग्रह को संग्रहीत करने के लिए किया जाता है। सेट की तरह यह डुप्लीकेट स्टोर नहीं करता है। वीकसेट के तरीके - विधि विवरण जोड़ें(obj) कमजोर सेट में नया मान जोड़ें। हटाएं(obj) कमजोरसेट से मान हटाता है। है(obj) कमजोरसेट ऑब्जेक्ट में मान है या नहीं, इसके आध