function makeStar(side) {
var arr = new Array(side), x, y, mid = (side-1)/2;
for( y = 0; y < side; y++) {
row = arr[y] = new Array(side);
for( x = 0; x < side; x++) {
row[x] = (y===x || x===side-1-y || x===mid || y===mid) ? 1 : 0;
}
}
return arr;
}
makeStar(4)
.reduce((p,c)=>{ return p + c.join(',') + "\n"},'')
/*
1,0,0,1
0,1,1,0
0,1,1,0
1,0,0,1
*/
function createArr(size) {
const arr = [...Array(size)].map(() => Array(size).fill(0));
const mid = (size / 2) | 0;
arr.forEach((n, i) => {
n[i] = n[size - i - 1] = 1;
// если размер чётный, непонятно, где выставлять единицы, так что выставляем только для нечётных
if (size & 1) {
arr[mid][i] = n[mid] = 1;
}
});
// хотя, конечно, есть вариант ставить по два вертикальных и горизонтальных ряда единиц
/*
const mid = (size - 1) / 2;
arr.forEach((n, i) =>
n[i] =
arr[mid | 0][i] =
arr[Math.ceil(mid)][i] =
n[mid | 0] =
n[Math.ceil(mid)] =
n[size - i - 1] =
1);
*/
return arr;
}
console.log(createArr(21).map(n => n.join('')).join('\n'));
100000000010000000001
010000000010000000010
001000000010000000100
000100000010000001000
000010000010000010000
000001000010000100000
000000100010001000000
000000010010010000000
000000001010100000000
000000000111000000000
111111111111111111111
000000000111000000000
000000001010100000000
000000010010010000000
000000100010001000000
000001000010000100000
000010000010000010000
000100000010000001000
001000000010000000100
010000000010000000010
100000000010000000001