हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो इस तरह के शाब्दिक सरणी के द्वि-आयामी (आवश्यक रूप से एक वर्ग मैट्रिक्स) सरणी लेता है -
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 ]