【问题标题】:how to create matrix as in description [closed]如何按照描述创建矩阵[关闭]
【发布时间】:2023-03-17 14:25:01
【问题描述】:


如何创建矩阵,输出必须如下所示:
1、3、5、7、9
2、4、6、8、10
11、13、15、17、19
20、22、24、26、28
期待关于 JS 的回答,但这不是重点,因为我正在寻找一种算法。
谢谢。
我尝试过这样的事情:

let arr = [];

for(let i = 0; i < 2; i++){
  arr[i] = []
  for(let j = 0; j < 5; j++){
    if(j % 2 ==0){
      arr[j] = i
    }
  }
}

console.log(arr)

【问题讨论】:

  • 您应该至少包含一些到目前为止您尝试过的代码?

标签: javascript arrays algorithm


【解决方案1】:

如您所见,每次确定起点后,都会添加一个共同数字 2。所以在这里我固定了两个起点,一个是even at 2,另一个是odd at 1。现在在每次迭代中将两个值都增加 2 并将 evenArrayoddArray 添加到最终输出中。

不要忘记在每次循环内部循环后resetevenArrayoddArray

let even = 2;
let odd = 1;
let arr = [];

for(let i = 0; i < 2; i++){
  let evenArr = []
  let oddArr = []
  for(let j = 0; j < 5; j++){
    evenArr[j] = even;
    oddArr[j] = odd;
    even +=2;
    odd +=2;
  }
  even = (even-2) * 2;  // to take care of point where even starts with double of last inserted value.
  arr.push(oddArr.join(' '),evenArr.join(' '))
}

console.log(arr)

【讨论】:

  • 工作完美,谢谢。
  • 它没有正确传递最后一行。
  • 我们应该鼓励初级开发人员在他们在这里发布问题之前编写一些代码。
【解决方案2】:

首先,尝试获取构建规则

                          row   start  comment
---- ---- ---- ---- ---- ------ ------ -------------------
  1    3    5    7    9   odd      1
  2    4    6    8   10   even     2
 11   13   15   17   19   odd     10   needs an adjustment
 20   22   24   26   28   even    20

然后创建一个包含所需行的数组并用值填充它。使用25 切换每行的起始值,具体取决于行的索引。

在每一行的内部取起始值,调整非偶数或奇数并添加内部索引的双倍。

var array = Array.from(
        { length: 4 },
        (start => (_, i) => Array.from(
            { length: 5 },
            (v => (_, j) => v + (v % 2 === i % 2) + j * 2)
            (start *= (i % 2 ? 2 : 5))
        ))
        (0.2)
    );

console.log(array.map(a => a.join(' ')));
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    猜你喜欢
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多