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