কম্পিউটার

জাভাস্ক্রিপ্ট ব্যবহার করে একটি বোগল শব্দ যাচাই করা


সমস্যা

একটি বোগল বোর্ড হল পৃথক অক্ষরের একটি 2D অ্যারে, যেমন −

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

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা বোগল বোর্ড এবং একটি স্ট্রিং নেয় এবং সেই স্ট্রিংটি বোগল বোর্ডে একটি বৈধ অনুমান কিনা তা পরীক্ষা করে। বৈধ অনুমান হল স্ট্রিং যা সংলগ্ন কোষগুলিকে সংযুক্ত করে তৈরি করা যেতে পারে (অনুভূমিকভাবে, উল্লম্বভাবে, বা তির্যক) কোনো পূর্বে ব্যবহৃত কোষ পুনরায় ব্যবহার না করে।

উদাহরণস্বরূপ, উপরের বোর্ডে "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. জাভাস্ক্রিপ্ট ব্যবহার করে একটি মূল উপাদান অ্যাক্সেস করা

  2. জাভাস্ক্রিপ্ট আমদানিতে '{ }' ব্যবহার করছেন?

  3. জাভাস্ক্রিপ্ট অবজেক্টের অ্যারের অ্যারের পদ্ধতি ব্যবহার করছেন?

  4. জাভাস্ক্রিপ্টে গোপনীয়তা অর্জনের জন্য ক্লোজার ব্যবহার করা