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

समस्या:टमाटर को जावास्क्रिप्ट में सड़ने में लगने वाला समय

<घंटा/>

समस्या

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

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

  • मान 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. जावास्क्रिप्ट में शब्दों को टाइप करने में लगने वाले समय की गणना करना

    मान लीजिए कि हमारे पास एक कीवर्ड है, जो पारंपरिक क्वर्टी टाइप की मैपिंग के बजाय, कीज़ को अंग्रेजी वर्णमाला के क्रम के अनुसार मैप करता है, यानी एबीसीडी... इससे पहले कि हम समस्या में उतरें, हमें निम्नलिखित दो धारणाएँ बनानी होंगी - वर्तमान में हमारी उंगलियों को इंडेक्स 0 पर रखा गया है, यानी कुंजी a

  1. बैठक कक्ष 2 जावास्क्रिप्ट में समस्या

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

  1. जावास्क्रिप्ट में केले की समस्या का वितरण

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