Всем привет, есть массив массивов произвольного размера.
Нужно пройтись по периметру по часовой стрелке и из этих значений в том же порядке сделать массив.
Сделал на reduce, может есть решение попроще?
const getTemplateArr = (size, arr = [], counter = 0) => {
for (var i = 0; i < size; i++) {
arr[i] = [];
for (var j = 0; j < size; j++, counter++) {
arr[i][j] = counter;
}
}
return arr;
};
console.table(getTemplateArr(10));
getPerimetrNumber = (size, leftSide = []) => {
return getTemplateArr(size).reduce((pre, cur, i, arr) => {
if (i === 0) {
return pre.concat(cur);
}
if (i === arr.length - 1) {
return pre.concat(
cur[cur.length - 1],
cur.slice(0, cur.length - 1).reverse(),
leftSide
);
}
pre.push(cur[cur.length - 1]);
leftSide.unshift(cur[0]);
return pre;
}, []);
};
console.log(getPerimetrNumber(10));