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

JavaScript में मैट्रिक्स को विकर्ण रूप से पार करना


समस्या:

हमें एक 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. JavaScript escape(): अप्रचलित URI एन्कोडिंग फंक्शन JavaScript escape(): अप्रचलित URI एन्कोडिंग फंक्शन

    चेतावनी: escape() फंक्शन JavaScript 1.5 से अप्रचलित (deprecated) है। आधुनिक कोड में encodeURI() या encodeURIComponent() का उपयोग करें। ऐतिहासिक उदाहरण { sampleEle.innerHTML = escape(url); }); </script> </body> </html> आउटपुट https%3A//www.google.com/images%3Fsize%

  1. JavaScript DataView: ArrayBuffer पर लो-लेवल बाइनरी एक्सेस JavaScript DataView: ArrayBuffer पर लो-लेवल बाइनरी एक्सेस

    DataView एक लो-लेवल इंटरफेस है जो ArrayBuffer (कच्चे बाइनरी डेटा का निश्चित-लंबाई कंटेनर) को पढ़ने/लिखने के लिए कई संख्या प्रकारों (Int8, Uint16, Float32, आदि) में अनुमति देता है। एंडियननेस नियंत्रण प्रदान करता है। उदाहरण { // बाइनरी में पढ़ें fillEle.innerHTML = बाइनरी: + view.g

  1. JavaScript Let कीवर्ड JavaScript Let कीवर्ड

    2015 में पेश किया गया JavaScript Let कीवर्ड हमें ब्लॉक-स्कोप्ड वेरिएबल परिभाषित करने की अनुमति देता है।उदाहरण<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale