समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो एक संख्या n लेता है। हमारा फ़ंक्शन N * N ऑर्डर का एक ऐरे (2-D ऐरे) बनाकर लौटाना चाहिए, जिसमें 1s [0, 0] से शुरू होने वाले सभी स्पाइरलिंग पोजीशन ले लें और 0s नॉन-स्पाइरलिंग पोजीशन लें। इसलिए, n = 5 के लिए, आउटपुट इस तरह दिखेगा −
[ [ 1, 1, 1, 1, 1 ], [ 0, 0, 0, 0, 1 ], [ 1, 1, 1, 0, 1 ], [ 1, 0, 0, 0, 1 ], [ 1, 1, 1, 1, 1 ] ]
उदाहरण
निम्नलिखित कोड है −
const num = 5; const spiralize = (num = 1) => { const arr = []; let x, y; for (x = 0; x < num; x++) { arr[x] = Array.from({ length: num, }).fill(0); } let left = 0; let right = num; let top = 0; let bottom = num; x = left; y = top; let h = Math.floor(num / 2); while (left < right && top < bottom) { while (y < right) { arr[x][y] = 1; y++; } y--; x++; top += 2; if (top >= bottom) break; while (x < bottom) { arr[x][y] = 1; x++; } x--; y--; right -= 2; if (left >= right) break; while (y >= left) { arr[x][y] = 1; y--; } y++; x--; bottom -= 2; if (top >= bottom) break; while (x >= top) { arr[x][y] = 1; x--; } x++; y++; left += 2; } if (num % 2 == 0) arr[h][h] = 1; return arr; }; console.log(spiralize(num));आउटपुट
कंसोल आउटपुट निम्नलिखित है −
[ [ 1, 1, 1, 1, 1 ], [ 0, 0, 0, 0, 1 ], [ 1, 1, 1, 0, 1 ], [ 1, 0, 0, 0, 1 ], [ 1, 1, 1, 1, 1 ] ]