Я ищу функцию, чтобы сделать это,
test(3);
#result
3333333
3222223
3211123
3210123
3211123
3222223
3333333
test(1)
#result
111
101
111
Я пытаюсь это сделать, но я мог найти любую связь между я и n в каждом цикле. Не могли бы вы показать мне алгоритм?
function test(n) {
return Array.from({ length: (n * 2) + 1 }, () => {
return Array.from({ length: (n * 2) + 1 }, (item, i) => {
return i;
})
});
}
test(3)
результат:
[ [ 0, 1, 2, 3, 4, 5, 6 ],
[ 0, 1, 2, 3, 4, 5, 6 ],
[ 0, 1, 2, 3, 4, 5, 6 ],
[ 0, 1, 2, 3, 4, 5, 6 ],
[ 0, 1, 2, 3, 4, 5, 6 ],
[ 0, 1, 2, 3, 4, 5, 6 ],
[ 0, 1, 2, 3, 4, 5, 6 ] ]
Вы не были в миллионах миль от этой работы.
Вы можете захватить индекс внешнего массива (y) и индекс внутренней матрицы (x). С этими двумя значениями вы можете решить, что хотите в ячейке x, y..
например..
function test(n) {
return Array.from({ length: (n * 2) + 1 }, (_, y) => {
return Array.from({ length: (n * 2) + 1 }, (_, x) => {
return Math.max(
x > n ? x - n : n - x,
y > n ? y - n : n - y
);
})
});
}
const ret = test(3);
ret.forEach((i) => {
console.log(i.join(""));
});