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

जावास्क्रिप्ट में एक मैट्रिक्स में तिरछे ट्रैवर्सिंग

<घंटा/>

समस्या:

हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता होती है जो एक वर्ग मैट्रिक्स (समान संख्या में पंक्तियों और स्तंभों वाले सरणियों की एक सरणी) लेता है। फ़ंक्शन को सरणी के उस सरणी के माध्यम से तिरछे ट्रैवर्स करना चाहिए और उस क्रम में रखे गए तत्वों की एक नई सरणी तैयार करनी चाहिए जो ट्रैवर्सिंग के दौरान सामने आती है।

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

const arr = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
];

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

const output = [1, 2, 4, 7, 5, 3, 6, 8, 9];

उदाहरण

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

const arr = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
];
const findDiagonalOrder = (arr = []) => {
   if(!arr.length){
      return [];
   };
   let ind = 0;
   let colBegin = 0, rowBegin = 0;
   let rowMax = arr.length, colMax = arr[0].length;
   const res = [], stack = [];
   while(rowBegin< rowMax || colBegin<colMax) {
      for(let row = rowBegin, col = colBegin; row < rowMax && col >=0 ;
      row++,col--){
         if(ind%2 === 0){
            stack.push((arr[row][col]));
         }else{
            res.push(arr[row][col]);
         };
      };
      ind++;
      while(stack.length){
         res.push(stack.pop());
      };
      colBegin++
      if(colBegin> colMax-1 && rowBegin < rowMax){
         colBegin = colMax-1
         rowBegin++
      }
   };
   return res
};
console.log(findDiagonalOrder(arr));

कोड स्पष्टीकरण:

हमने जो कदम उठाए वे हैं -

  • शुरुआती बिंदु का ट्रैक रखते हुए एक दिशा में ट्रैवर्स किया गया।

  • यदि अनुक्रमणिका सम है, तो हम एक स्टैक पर पुश करेंगे और एक बार जब यह विकर्ण के अंत तक पहुंच जाएगा, तो हमारे आउटपुट सरणी में पॉप को जोड़ देगा।

  • जैसे-जैसे हम अगले विकर्ण की ओर बढ़ते हैं, हम अनुक्रमणिका बढ़ाते रहते हैं।

  • हम कॉलम स्टार्ट इंडेक्स को तब तक बढ़ाते हैं जब तक कि यह अंत तक नहीं पहुंच जाता, क्योंकि यह अगले पुनरावृत्तियों के लिए इसे अंतिम इंडेक्स पर रोक दिया जाएगा और हम इस बिंदु से बढ़ते हुए रो स्टार्ट इंडेक्स को बढ़ाएंगे।

आउटपुट

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

[
   1, 2, 4, 7, 5,
   3, 6, 8, 9
]

  1. जावास्क्रिप्ट एस्केप ()

    जावास्क्रिप्ट में एस्केप () फ़ंक्शन का उपयोग स्ट्रिंग को एन्कोड करने के लिए किया जाता है। यह जावास्क्रिप्ट 1.5 में पदावनत है। जावास्क्रिप्ट एस्केप के लिए कोड निम्नलिखित है () उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta

  1. जावास्क्रिप्ट डेटा व्यू ()

    JavaScript DataView हमें निम्न स्तर का इंटरफ़ेस प्रदान करके बाइनरी ArrayBuffer में कई प्रकार की संख्याओं को पढ़ने और लिखने की अनुमति देता है। हम DataView() का उपयोग किए बिना सीधे ArrayBuffer में हेरफेर नहीं कर सकते। JavaScript DataView को लागू करने के लिए कोड निम्नलिखित है - उदाहरण दस्तावेज़ बॉडी {

  1. जावास्क्रिप्ट चलो

    2015 में पेश किया गया जावास्क्रिप्ट लेट कीवर्ड हमें ब्लॉक स्कोप्ड वेरिएबल्स को परिभाषित करने की अनुमति देता है। जावास्क्रिप्ट में Let कीवर्ड का उपयोग करके वेरिएबल घोषित करने के लिए कोड निम्नलिखित है - उदाहरण दस्तावेज़ बॉडी { फॉन्ट-फ़ैमिली:सेगो यूआई, ताहोमा, जिनेवा, वर्दाना, सेन्स-सेरिफ़; } .नमूना{