gpt4 book ai didi

javascript - 如何动态填充三 Angular 形二维数组?

转载 作者:行者123 更新时间:2023-11-28 14:16:03 25 4
gpt4 key购买 nike

我的任务需要基于三 Angular 矩阵进行数值计算(模数不超过9,数组的大小不能超过15):

 1 2 3 4 5
7 8 9 0
4 5 6
2 3
1

我认为将数据存储在二维三 Angular 形数组中是最方便的。

UPD:随后,我需要选择从第二层的任何元素到最顶层的最大路径(该路径只能沿对 Angular 线走,不能垂直或水平向上)。这是一个类似于最大路径问题的任务,其解决方案看起来最简单,使用 2D array .

这里我同时遇到了几个问题:

1) 如何静态创建三 Angular 形数组?

现在我正在做这样的事情:

let numbers = [1, 2, 3, 4, 5, 6];

function fillArray(nums, layer) {
let arr = [];
for(let k = 0; k < nums.length;) {
for (let i = 0; i < layer; i++) {
arr[i] = [];
for (let j = 0; j <= i; j++) {
arr[i][j] = nums[k];
k++;
}
}
}
return arr;
}

console.log(fillArray(numbers,3));

也许这是正确的,但它看起来太麻烦了,此外,在我看来,我可以动态计算图层。也许递归解决方案在这里看起来会更好。

2) 如何确定何时创建新的嵌套数组?

静态地讲,一切都非常清楚,但如果我有一个数组,假设它是这样填充的: [ [1], [1, 2], [1, 2] ] 然后如何判断创建新的嵌套数组的时刻,即将当前的数组填充到这个状态:[ [1], [1, 2], [1, 2, 3] ] 和,例如,如果有新元素进入输入,则在填充前一个元素后创建以下内容: [ [1], [1, 2], [1, 2, 3], [1, 2, 3, 4] ]

最佳答案

如果您的计算随机使用三 Angular 矩阵,您可以显式计算行/列索引:

function row_col_from_index(i) {
let row = 0.5 * ((8*i + 1)**0.5 - 1),
col = i - row*(row+1)/2;
return [row, col];
}

function index_from_row_col(row, col) {
return row*(row+1)/2 + col;
}

然后您可以在需要时在矩阵中惰性地创建所需的行

let matrix = [];
...
let [row, col] = row_col_from_index(i);
(matrix[row]||(matrix[row]=[]))[col] = data;

索引中的行/列的“神奇”公式是通过求解计算出来的

x*(x+1)/2 = n

solution procedure for solving x*(x+1)/2=n

关于javascript - 如何动态填充三 Angular 形二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57335694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com