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

JavaScript में टमाटर सड़ने में लगने वाला समय


समस्या

हमें एक JavaScript फ़ंक्शन लिखना है जो संख्याओं का एक 2-D सरणी arr को एकमात्र आर्गुमेंट के रूप में लेता है।

सरणी में संख्याएं हो सकती हैं -

  • मान 0 जो एक खाली सेल का प्रतिनिधित्व करता है;

  • मान 1 जो एक ताजा टमाटर का प्रतिनिधित्व करता है;

  • मान 2 जो एक सड़ा हुआ टमाटर का प्रतिनिधित्व करता है।

हर मिनट, कोई भी ताजा टमाटर जो सड़े हुए टमाटर के निकट (4-दिशात्मक) है, सड़ जाता है।

हमारे फ़ंक्शन को उन न्यूनतम मिनटों की संख्या वापस करनी चाहिए जो तब तक बीतने चाहिए जब तक किसी सेल में ताजा टमाटर न हो। यदि यह असंभव है, तो हमें -1 वापस करना चाहिए।

उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -

const arr = [ 
  [2, 1, 1], 
  [1, 1, 0], 
  [0, 1, 1] 
];

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

const output = 4;

आउटपुट व्याख्या

बीता समय टमाटर स्थिति
1
[ [2, 2, 1], [2, 1, 0], [0, 1, 1] ]
2
[ [2, 2, 2], [2, 2, 0], [0, 1, 1] ]
3
[ [2, 2, 2], [2, 2, 0], [0, 2, 1] ]
4
[ [2, 2, 2], [2, 2, 0], [0, 2, 2] ]

उदाहरण

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

const arr = [ 
  [2, 1, 1], 
  [1, 1, 0], 
  [0, 1, 1] 
]; 
const timeToRot = (arr = []) => { 
  let fresh = 0; 
  let count = -1; 
  let curr = []; 
  for(let i = 0; i < arr.length; i++){ 
    for(let j = 0; j < arr[i].length; j++){ 
      if(arr[i][j] === 1){ 
        fresh += 1; 
      }; 
      if(arr[i][j] === 2){ 
        curr.push([i, j]); 
      }; 
    }; 
  }; 
  if(!fresh){ 
    return 0; 
  }; 
  while(curr.length > 0){ 
    count += 1; 
    const next = []; 
    const rotten = (i, j) => { 
      arr[i][j] = 2; 
      next.push([i, j]); 
      fresh -= 1; 
    }; 
    for(const [i, j] of curr){ 
      if (arr[i - 1] && arr[i - 1][j] === 1) { 
        rotten(i - 1, j); 
      }; 
      if (arr[i + 1] && arr[i + 1][j] === 1) { 
        rotten(i + 1, j); 
      }; 
      if (arr[i][j - 1] === 1) { 
        rotten(i, j - 1); 
      }; 
      if (arr[i][j + 1] === 1) { 
        rotten(i, j + 1); 
      }; 
    } 
    curr = next; 
  }; 
  return fresh === 0 ? count : -1; 
}; 
console.log(timeToRot(arr));

आउटपुट

कंसोल में आउटपुट होगा -

4

  1. - JavaScript में शब्द टाइप करने में लगने वाला समय गणना करना

    मान लीजिए हमारे पास एक कीबोर्ड है, जो पारंपरिक qwerty प्रकार के कुंजी मैपिंग के बजाय, कुंजियों को केवल अंग्रेजी वर्णमाला क्रम के अनुसार मैप करता है यानी abcde... समस्या में गोता लगाने से पहले, हमें निम्नलिखित दो धारणाएं बनानी होंगी: वर्तमान में हमारी उंगलियों की नोक सूचकांक 0 पर रखी है, यानी कुंजी

  1. - JavaScript में मीटिंग रूम 2 समस्या

    हमें सरणियों की एक सरणी दी जाएगी, प्रत्येक उप-सरणी में ठीक दो तत्व होते हैं जो एक मीटिंग के प्रारंभ और समाप्ति समय को दर्शाते हैं। हमारे फ़ंक्शन का कार्य उस अधिकतम संख्या को ढूंढना है जो एक व्यक्ति समय के टकराव से बचते हुए मीटिंग ले सकता है। फ़ंक्शन को अंत में यह संख्या लौटानी चाहिए। उदाहरण यदि मीटि

  1. - JavaScript में केले वितरण समस्या

    समस्या मान लीजिए n लोग एक कतार में खड़े हैं, हम लोगों को निम्न तरीके से केले वितरित करना चाहते हैं - हम पहले व्यक्ति को 1 केला, दूसरे को 2 केले, और इसी तरह अंतिम व्यक्ति को n केले देते हैं। फिर, हम पंक्ति की शुरुआत में वापस जाते हैं, पहले व्यक्ति को n+1 केले, दूसरे को n+2 केले, और इसी तरह अंतिम व्