কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে স্কয়ার ম্যাট্রিক্সের এলিমেন্ট স্পায়ারলি ট্রাভার্স করা


সমস্যা বিবরণ

একটি স্কয়ার ম্যাট্রিক্স (২D অ্যারে) দেওয়া আছে। (0,0) পজিশন থেকে শুরু করে স্পায়ারলি (ঘুরাঘুরি) ট্রাভার্স করে ১D অ্যারে বানাতে হবে।

ইনপুট: [[1,2,3],[4,5,6],[7,8,9]]

আউটপুট: [1, 2, 3, 6, 9, 8, 7, 4, 5]

সমাধান

const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ];

const spiral = (arr = []) => {
  if (!arr || arr.length === 0) return [];
  let startRow = 0, startCol = 0;
  let res = [];
  let endCol = arr[0].length - 1;
  let endRow = arr.length - 1;
  
  while (startRow <= endRow && startCol <= endCol) {
    // টপ রো (লেফট টু রাইট)
    for (let i = startCol; i <= endCol; i++) res.push(arr[startRow][i]);
    startRow++;
    
    // রাইট কলম (টপ টু বটম)
    for (let i = startRow; i <= endRow; i++) res.push(arr[i][endCol]);
    endCol--;
    
    // বটম রো (রাইট টু লেফট) - যদি রো বাকি থাকে
    if (startRow <= endRow) {
      for (let i = endCol; i >= startCol; i--) res.push(arr[endRow][i]);
      endRow--;
    }
    
    // লেফট কলম (বটম টু টপ) - যদি কলম বাকি থাকে
    if (startCol <= endCol) {
      for (let i = endRow; i >= startRow; i--) res.push(arr[i][startCol]);
      startCol++;
    }
  }
  return res;
};

console.log(spiral(arr));

আউটপুট

[ 1, 2, 3, 6, 9, 8, 7, 4, 5 ]

ব্যাখ্যা

  • চারটি বাউন্ডারি ভেরিয়েবল: startRow, endRow, startCol, endCol।
  • প্রতিটি লেয়ার শেষে বাউন্ডারি আপডেট করা হয় (স্ট্রিক্টলি ইনওয়ার্ড স্পায়ারল)।
  • কন্ডিশনাল চেক দিয়ে ডুপ্লিকেট ভিজিট এড়ানো হয়।
  1. জাভাস্ক্রিপ্ট DOM কী?

  2. জাভাস্ক্রিপ্টে একই অ্যারেতে অ্যারের এলিমেন্টগুলো ডুপ্লিকেট করা

  3. জাভাস্ক্রিপ্টে সাব-অ্যারে-র এলিমেন্টসহ পুরো অ্যারে সর্ট করা

  4. জাভাস্ক্রিপ্টে স্কোয়ার ম্যাট্রিক্স ৯০ ডিগ্রি ঘুরানো