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

एल्गोरिदम समस्या - JavaScript में बैकट्रेसिंग पैटर्न


निम्नलिखित बैकट्रेसिंग समस्या पर विचार करें: एक 2-आयामी ग्रिड पर, 4 प्रकार के वर्ग हैं -

  • 1 शुरुआती वर्ग को दर्शाता है। ठीक एक शुरुआती वर्ग है।

  • 2 अंतिम वर्ग को दर्शाता है। ठीक एक अंतिम वर्ग है।

  • 0 खाली वर्गों को दर्शाता है जिन पर हम चल सकते हैं।

  • -1 उन बाधाओं को दर्शाता है जिन पर हम नहीं चल सकते।

हमें एक फ़ंक्शन लिखना है जो शुरुआती वर्ग से अंतिम वर्ग तक 4-दिशात्मक वॉक की संख्या लौटाता है, जो हर नॉन-ऑब्स्टेकल वर्ग पर ठीक एक बार चलता है।

उदाहरण

const arr = [   [1,0,0,0],   [0,0,0,0],   [0,0,2,-1] ]; const uniquePaths = (arr, count = 0) => {   const dy = [1,-1,0,0], dx = [0,0,1,-1];   const m = arr.length, n = arr[0].length;   const totalZeroes = arr.map(row => row.filter(num => num === 0).length).reduce((totalZeroes,nextRowZeroes) => totalZeroes + nextRowZeroes, 0);   const depthFirstSearch = (i, j, covered) => {     if (arr[i][j] === 2){       if (covered === totalZeroes + 1) count++;       return;     };     for (let k = 0; k < 4; k++)       if (i+dy[k] >= 0 && i+dy[k] < m && j+dx[k] >= 0 && j+dx[k] < n && arr[i+dy[k]][j+dx[k]] !== -1 ){         arr[i][j] = -1;         depthFirstSearch(i+dy[k],j+dx[k],covered+1);         arr[i][j] = 0;       }     return;   };   for (let row = 0; row < m; row++)     for (let col = 0; col < n; col++)     if (arr[row][col] === 1){       arr[row][col] = -1;       depthFirstSearch(row,col,0);       break;     }   return count; }; console.log(uniquePaths(arr));

व्याख्या

  • हम चार दिशात्मक पुनरावृति की सुविधा के लिए वेरिएबल्स सेट करते हैं जब ग्रिड को पार करते हैं, मैट्रिक्स में जीरो गिनते हैं ताकि रिकर्सन की बेस कंडीशन पूरी होने पर कवरेज की जांच की जा सके

  • फिर हम DFS (डेप्थ फर्स्ट सर्च) बैकट्रैक फ़ंक्शन सेट करते हैं जो एक्टिव पाथ पर ग्रिड को -1 से मार्क करता है और फिनिश सेल पहुंचने पर पाथ लंबाई की जांच करता है

  • और अंत में, हम सभी पूर्ण पाथ गिनने के लिए स्टार्ट सेल से DFS लॉन्च करते हैं और काउंट लौटाते हैं

आउटपुट

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

2

  1. जावास्क्रिप्ट में new.target जावास्क्रिप्ट में new.target

    new.target एक मेटाप्रॉपर्टी है जो हमें रनटाइम पर यह निर्धारित करने की अनुमति देती है कि कोई फ़ंक्शन या कंस्ट्रक्टर new कीवर्ड का उपयोग करके बुलाया गया था या नहीं। जावास्क्रिप्ट में new.target के लिए निम्नलिखित कोड है: उदाहरण <!DOCTYPE html> <html lang="en"> <head> <me

  1. जावास्क्रिप्ट में डिबगर स्टेटमेंट जावास्क्रिप्ट में डिबगर स्टेटमेंट

    जावास्क्रिप्ट में डिबगर स्टेटमेंट का उपयोग कोड में ब्रेकपॉइंट सेट करने के लिए किया जाता है। कोड का निष्पादन डिबगर स्टेटमेंट का सामना करते ही रुक जाता है और डिबगर फ़ंक्शन को कॉल करता है (यदि उपलब्ध हो)। जावास्क्रिप्ट में डिबगर स्टेटमेंट लागू करने के लिए निम्नलिखित कोड है: उदाहरण <!DOCTYPE html>

  1. JavaScript में संख्या पैटर्न JavaScript में संख्या पैटर्न

    हमें एक JavaScript और HTML प्रोग्राम लिखना है जो उपयोगकर्ता को एक टेक्स्ट इनपुट और बटन प्रदान करता है। जब उपयोगकर्ता इनपुट में कोई मान दर्ज करता है, मान लीजिए 5, और बटन पर क्लिक करता है, तो हमें स्क्रीन पर निम्नलिखित पैटर्न प्रिंट करना चाहिए। (n = 5 के लिए) 01 01 02 01 02 03 01 02 03 04 01 02 03 04