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

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. JavaScript Random नंबर JavaScript Random नंबर

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

  1. JavaScript Promises JavaScript Promises

    JavaScript में Promises हमें एसिंक्रोनस ऑपरेशन करने की अनुमति देते हैं जहां वैल्यू प्रॉमिस बनाते समय पहले से ज्ञात नहीं होती। एक प्रॉमिस की तीन अवस्थाएं हो सकती हैं: पेंडिंग, फुलफिल्ड और रिजेक्टेड।उदाहरण<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&

  1. JavaScript WeakSet JavaScript WeakSet

    JavaScript WeakSet का उपयोग ऑब्जेक्ट्स के संग्रह को स्टोर करने के लिए किया जाता है। Set की तरह यह डुप्लिकेट स्टोर नहीं करता।WeakSet के मेथड्समेथडविवरणadd(obj)WeakSet में नया वैल्यू जोड़ता है।delete(obj)WeakSet से वैल्यू हटाता है।has(obj)True या false लौटाता है यह इस पर निर्भर करता है कि WeakSet ऑब्ज