Files
freeCodeCamp/curriculum/challenges/german/22-rosetta-code/rosetta-code-challenges/look-and-say-sequence.md
2024-01-24 19:52:36 +01:00

2.1 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5e6dd14797f5ce267c2f19d0 Conway-Folge 1 385277 look-and-say-sequence

--description--

The Look and say sequence is a recursively defined sequence of numbers.

Definition von Sequenzen

  • Take a decimal number
  • Look die Zahl an und gruppiere die aufeinanderfolgenden Ziffern der gleichen Ziffer.
  • Say die Zahl, von links nach rechts, Gruppe für Gruppe; wie viele von dieser Ziffer gibt es - gefolgt von der gruppierten Ziffer.
Dies wird die nächste Zahl der Sequenz sein.

Ein Beispiel:

  • Starting with the number 1, you have one 1 which produces 11
  • Beginnend mit 11, hast du zwei 1'en. z.B.: 21
  • Beginnend bei 21, hast du eine 2, dann eine 1. z.B.: (12)(11) das zu 1211 wird
  • Beginnend mit 1211, hast du eine 1, eine 2, dann zwei 1'en. z.B.: (11)(12)(21) das zu 111221wird

--instructions--

Schreibe eine Funktion, die eine Zeichenfolge als Parameter akzeptiert, diese verarbeitet und die resultierende Zeichenfolge zurückgibt.

--hints--

lookAndSay sollte eine Funktion sein.

assert(typeof lookAndSay == 'function');

lookAndSay("1") sollte einen String zurückgeben.

assert(typeof lookAndSay('1') == 'string');

lookAndSay("1") sollte "11" zurückgeben.

assert.equal(lookAndSay('1'), '11');

lookAndSay("11") sollte "21" zurückgeben.

assert.equal(lookAndSay('11'), '21');

lookAndSay("21") sollte "1211" zurückgeben.

assert.equal(lookAndSay('21'), '1211');

lookAndSay("1211") sollte "111221" zurückgeben.

assert.equal(lookAndSay('1211'), '111221');

lookAndSay("3542") sollte "13151412" zurückgeben.

assert.equal(lookAndSay('3542'), '13151412');

--seed--

--seed-contents--

function lookAndSay(str) {

}

--solutions--

function lookAndSay(str) {
    return str.replace(/(.)\1*/g, function(seq, p1) {
      return seq.length.toString() + p1;
    });
}