# Creating a binary spiral array of specific size in JavaScript

JavascriptWeb DevelopmentFront End Technology

## Problem

We are required to write a JavaScript function that takes in a number n. Our function should construct and return an array of N * N order (2-D array), in which the 1s take all the spiralling positions starting from [0, 0] and all the 0s take non-spiralling positions.

Therefore, for n = 5, the output will look like −

[
[ 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 ]
]

## Example

Following is the code −

Live Demo

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));

## Output

Following is the console output −

[
[ 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 ]
]