समस्या
एक Boggle बोर्ड अलग-अलग वर्णों की एक 2D सरणी है, उदा। -
कॉन्स बोर्ड =[ ["आई", "एल", "ए", "डब्ल्यू"], ["बी", "एन", "जी", "ई"], ["आई", "यू" ","ए", "ओ"], ["ए", "एस", "आर", "एल"]];
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता होती है जो बोगल बोर्ड और एक स्ट्रिंग लेता है और जांचता है कि वह स्ट्रिंग बोगल बोर्ड में मान्य अनुमान है या नहीं। मान्य अनुमान स्ट्रिंग हैं जो आसन्न कोशिकाओं (क्षैतिज, लंबवत, या तिरछे) पहले इस्तेमाल किए गए किसी भी सेल का पुन:उपयोग किए बिना।
उदाहरण के लिए, उपरोक्त बोर्ड में "LINGO", और "ILNBIA" सभी मान्य अनुमान होंगे, जबकि "BUNGIE" और "SINUS" नहीं होंगे।
उदाहरण
निम्नलिखित कोड है -
कॉन्स बोर्ड =[ ["आई", "एल", "ए", "डब्ल्यू"], ["बी", "एन", "जी", "ई"], ["आई", "यू" ","ए", "ओ"], ["ए", "एस", "आर", "एल"]]; अनुमान अनुमान ='बिंगो'; स्थिरांक चेकवर्ड =(बोर्ड =[], अनुमान ='' ) => { const numRows =बोर्ड लंबाई; const numCols =बोर्ड [0]। लंबाई; कतार =बोर्ड को कम करें ((एसीसी, पंक्ति, i) => {पंक्ति। प्रत्येक के लिए ((x, जे) => {अगर (x ===अनुमान [0]) { acc.push ( { pos:{r :i, c:j} , nextIndex:1, पथ:[numCols*i + j ] } ); } }); वापसी acc; }, []); चलो एक्सप्लोरवर्ड =(obj, क्यू) => { सभी मूव्स =[ {r:obj.pos.r - 1, c:obj.pos.c}, {r:obj.pos.r + 1, c:obj. pos.c }, {r:obj.pos.r, c:obj.pos.c - 1}, {r:obj.pos.r, c:obj.pos.c + 1}, {r:obj. pos.r - 1, c:obj.pos.c - 1}, {r:obj.pos.r - 1, c:obj.pos.c + 1}, {r:obj.pos.r + 1, c:obj.pos.c - 1}, {r:obj.pos.r + 1, c:obj.pos.c + 1}]; allMoves.forEach((o) => {सूचकांक =numCols * या + oc; if (या>=0 &&या=0 &&oc 0) { चलो obj =कतार। शिफ्ट (); अगर (obj.nextIndex ===अनुमान। लंबाई) {वापसी सच; } एक्सप्लोरवर्ड (ओबीजे, कतार); } झूठी वापसी;};console.log(checkWord(board, अनुमान));
कोड स्पष्टीकरण
हमने जो कदम उठाए वे हैं -
-
हम पहले अक्षर की घटना का पता लगाने के लिए 2d सरणी को स्कैन करते हैं
-
फिर हम {स्थिति, अनुक्रमणिका} को कतार में धकेलते हैं, जबकि कतार खाली नहीं होती है, हम पहली वस्तु को बाहर निकालते हैं
-
फिर हम सभी दिशाओं की तलाश करते हैं। यदि सेल में अक्षर वर्ड में अक्षर से मेल खाता है और सेल का पुन:उपयोग नहीं किया जाता है, तो हम {स्थिति, अनुक्रमणिका} को अपडेट करते हैं और कतार में संलग्न करते हैं अन्यथा, हम ऑब्जेक्ट को त्याग देते हैं और जब कोई मैच मिलता है या कोई मेल नहीं होता है तो हम रुक जाते हैं।