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

JavaScript में बोगल वर्ड को मान्य करना


समस्या

एक बोगल बोर्ड व्यक्तिगत कैरेक्टर्स का एक 2D ऐरे है, उदा. −

const board = [ ["I","L","A","W"], ["B","N","G","E"], ["I","U","A","O"], ["A","S","R","L"] ];

हमें एक JavaScript फ़ंक्शन लिखना है जो बोगल बोर्ड और एक स्ट्रिंग लेता है और जांचता है कि वह स्ट्रिंग बोगल बोर्ड में एक वैध अनुमान है या नहीं। वैध अनुमान वे स्ट्रिंग्स हैं जिन्हें आसन्न सेल्स (क्षैतिज, लंबवत, या विकर्ण) को जोड़कर बनाया जा सकता है बिना किसी पहले उपयोग किए गए सेल का पुन: उपयोग किए।

उदाहरण के लिए, उपरोक्त बोर्ड में "LINGO", और "ILNBIA" सभी वैध अनुमान होंगे, जबकि "BUNGIE" और "SINUS" नहीं होंगे।

उदाहरण

निम्नलिखिक कोड है −

const board = [ ["I","L","A","W"], ["B","N","G","E"], ["I","U","A","O"], ["A","S","R","L"] ]; const guess = 'BINGO'; const checkWord = (board = [], guess = '') => { const numRows = board.length; const numCols = board[0].length; let queue = board.reduce((acc, row, i) => { row.forEach((x, j) => { if (x === guess[0]) { acc.push ( { pos: {r: i, c: j} , nextIndex: 1, path: [numCols*i + j ] } ); } }); return acc; }, []); let exploreWord = (obj, queue) => { let allMoves = [ {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) => { let index = numCols * o.r + o.c; if (o.r >= 0 && o.r < numRows && o.c >= 0 && o.c < numCols) { if (board[o.r][o.c] === guess[obj.nextIndex] && !obj.path.includes(index)) { let cloneObj = JSON.parse(JSON.stringify(obj)); cloneObj.pos = { r: o.r, c: o.c }; cloneObj.nextIndex += 1; cloneObj.path.push(index); queue.push(cloneObj); } } }); }; while (queue.length > 0) { let obj = queue.shift(); if (obj.nextIndex === guess.length) { return true; } exploreWord(obj, queue); } return false; }; console.log(checkWord(board, guess));

कोड व्याख्या

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

  • हम पहले अक्षर की घटना खोजने के लिए 2d ऐरे को स्कैन करते हैं
  • फिर हम { स्थिति, इंडेक्स } को कतार में डालते हैं, जब तक कतार खाली नहीं है, हम पहले ऑब्जेक्ट को पॉप करते हैं
  • फिर हम सभी दिशाओं में देखते हैं। यदि सेल में अक्षर शब्द में अक्षर से मेल खाता है और सेल का पुन: उपयोग नहीं किया गया है, तो हम {स्थिति, इंडेक्स} को अपडेट करते हैं और कतार में जोड़ते हैं अन्यथा, हम ऑब्जेक्ट को छोड़ देते हैं और हम तब रुकते हैं जब एक मिलान मिल जाता है या कोई मिलान नहीं होता।

आउटपुट

true
  1. JavaScript इम्पोर्ट्स में  { }  का उपयोग JavaScript इम्पोर्ट्स में '{ }' का उपयोग

    JavaScript इम्पोर्ट्स में {} का उपयोग करने का निम्नलिखिक कोड है:उदाहरण<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Import wi

  1. जावास्क्रिप्ट ऑब्जेक्ट्स के ऐरे पर ऐरे के मेथड्स का उपयोग करना जावास्क्रिप्ट ऑब्जेक्ट्स के ऐरे पर ऐरे के मेथड्स का उपयोग करना

    जावास्क्रिप्ट ऑब्जेक्ट्स के ऐरे पर ऐरे के मेथड्स का उपयोग करने का कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Document</title> <style

  1. जावास्क्रिप्ट में प्राइवेसी प्राप्त करने के लिए क्लोजर्स का उपयोग जावास्क्रिप्ट में प्राइवेसी प्राप्त करने के लिए क्लोजर्स का उपयोग

    जावास्क्रिप्ट में प्राइवेसी प्राप्त करने के लिए क्लोजर्स को लागू करने का कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Document</title> &l