কম্পিউটার

একটি বর্গাকার ম্যাট্রিক্স জাভাস্ক্রিপ্টের উপাদানগুলিকে সর্পিল করা৷


আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা দ্বি-মাত্রিক (অবশ্যই একটি বর্গ ম্যাট্রিক্স) অ্যারে এর আক্ষরিক বিন্যাসের মতো −

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

ফাংশনটির একটি নতুন অ্যারে তৈরি করা উচিত যা অবস্থান (0, 0) থেকে শুরু করে ইনপুট অ্যারে থেকে উপাদানগুলিকে সর্পিলভাবে নেয় এবং সেই একক মাত্রিক অ্যারেটি ফিরিয়ে দেয়৷

অতএব, এই অ্যারের জন্য, সর্পিলটি −

এর মতো হওয়া উচিত
const output = [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;
   let 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
]

  1. জাভাস্ক্রিপ্ট DOM কি?

  2. জাভাস্ক্রিপ্টের সাথে একই অ্যারের একটি অ্যারের উপাদানগুলিকে কীভাবে নকল করবেন?

  3. জাভাস্ক্রিপ্টের সাবয়ারেতে উপস্থিত উপাদানগুলি সহ একটি অ্যারে সাজানো

  4. জাভাস্ক্রিপ্টে স্কয়ার ম্যাট্রিক্স ঘূর্ণন