【问题标题】:How to generate the following sequence with different step? [closed]如何以不同的步骤生成以下序列? [关闭]
【发布时间】:2022-01-20 11:21:14
【问题描述】:

我有一组 n 项目(比如说 n=8)。我需要在循环中从这些项目中生成以下序列: [0, 100, 150, 250, 300, 350, 450, 500]。我该怎么做?

【问题讨论】:

  • 您只是想为每个索引增加50 的值,还是它应该是一个变量icrement,有时它增加100 而其他时候增加50
  • 是的,完全正确(应该是可变增量)。不知道怎么做,我是编程新手
  • 增量的标准是什么? (什么时候应该是100,什么时候应该是50)?
  • 第一项和第二项之间应该是+100,第二和第三之间应该是+50,第三和第四之间应该是+50,第四和第五之间应该是+100 .以此类推直到数组结束
  • 您想要的模式与您在帖子中的模式不匹配。您帖子中第三个和第四个之间的差是 100,而不是 50(第三个值是 150,第四个值是 250)。

标签: javascript algorithm


【解决方案1】:

这行得通吗?

new Array(8).fill(0).map((_, i) => {
  if (i === 0) return 0;
  if (i === 1) return 100;
  return 50 * i + 50;
});

【讨论】:

  • 它生成const result = [0, 100, 150, 200, 250, 300, 350, 400],但它应该是[0, 100, 150, 250, 300, 350, 450, 500]
【解决方案2】:

假设我了解您要创建的序列,您可以试试这个。在这个解决方案中,我在j 上使用modulo,因此它会在达到序列长度3 后不断重置值。

const seq = [100, 50, 50];
const n = 8;
const output = [0];

// indices to track element and sequence position
let i = 0;
let j = 0;

// tracks previous value
let prev = 0;

for (let i = 0; i < n - 1; i++) {
  prev += seq[j++ % 3];
  output.push(prev);
}

console.log(output);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2021-09-05
    相关资源
    最近更新 更多