Oliver Eyton-Williams ee1e8abd87
feat(curriculum): restore seed + solution to Chinese (#40683)
* feat(tools): add seed/solution restore script

* chore(curriculum): remove empty sections' markers

* chore(curriculum): add seed + solution to Chinese

* chore: remove old formatter

* fix: update getChallenges

parse translated challenges separately, without reference to the source

* chore(curriculum): add dashedName to English

* chore(curriculum): add dashedName to Chinese

* refactor: remove unused challenge property 'name'

* fix: relax dashedName requirement

* fix: stray tag

Remove stray `pre` tag from challenge file.

Signed-off-by: nhcarrigan <nhcarrigan@gmail.com>

Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
2021-01-12 19:31:00 -07:00

2.1 KiB
Raw Blame History

id, title, challengeType, videoUrl, dashedName
id title challengeType videoUrl dashedName
595608ff8bcd7a50bd490181 冰雹序列 5 hailstone-sequence

--description--

Hailstone数字序列可以从起始正整数n生成

如果n为1则序列结束。如果n是偶数那么序列的下一个n = n/2如果n是奇数那么序列的下一个n = (3 \* n) + 1

(未经证实的) Collatz猜想是任何起始编号的冰雹序列总是终止。

冰雹序列也称为冰雹数因为这些值通常受到多个下降和上升如云中的冰雹或者作为Collatz序列。

任务创建例程以生成数字的hailstone序列。使用例程表明对于27号的冰雹序列具有开始与112个元件27, 82, 41, 124 ,结束时用8, 4, 2, 1与显示具有最长冰雹序列的数目少于100,000一起序列的长度。 (但不要显示实际的序列!)参见: xkcd (幽默)。

--hints--

hailstoneSequence是一个函数。

assert(typeof hailstoneSequence === 'function');

[[27,82,41,124,8,4,2,1], [351, 77031]] hailstoneSequence()应返回[[27,82,41,124,8,4,2,1], [351, 77031]]

assert.deepEqual(hailstoneSequence(), res);

--seed--

--after-user-code--

const res = [[27, 82, 41, 124, 8, 4, 2, 1], [351, 77031]];

--seed-contents--

function hailstoneSequence() {
  const res = [];


  return res;
}

--solutions--

function hailstoneSequence () {
  const res = [];

  function hailstone(n) {
    const seq = [n];
    while (n > 1) {
      n = n % 2 ? 3 * n + 1 : n / 2;
      seq.push(n);
    }
    return seq;
  }

  const h = hailstone(27);
  const hLen = h.length;
  res.push([...h.slice(0, 4), ...h.slice(hLen - 4, hLen)]);

  let n = 0;
  let max = 0;
  for (let i = 100000; --i;) {
    const seq = hailstone(i);
    const sLen = seq.length;

    if (sLen > max) {
      n = i;
      max = sLen;
    }
  }
  res.push([max, n]);

  return res;
}