Files
freeCodeCamp/curriculum/challenges/german/10-coding-interview-prep/project-euler/problem-100-arranged-probability.md
2023-02-20 20:31:01 +01:00

2.1 KiB
Raw Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5900f3d01000cf542c50fee3 Problem 100: Arrangierte Wahrscheinlichkeit 1 301724 problem-100-arranged-probability

--description--

Wenn eine Schachtel einundzwanzig farbige Scheiben enthält, die sich aus fünfzehn blauen und sechs roten Scheiben zusammensetzen, und zwei Scheiben nach dem Zufallsprinzip entnommen werden, zeigt sich, dass die Wahrscheinlichkeit, zwei blaue Scheiben zu entnehmen, sehr groß ist.

{P(BB)} = \frac{15}{21}×\frac{14}{20} = \frac{1}{2}

Die nächste Anordnung, bei der die Wahrscheinlichkeit, zwei blaue Scheiben zufällig zu nehmen, genau 50 % beträgt, gibt es eine Schachtel mit fünfundachtzig blauen Scheiben und fünfunddreißig roten Scheiben.

Indem du die erste Anordnung findest, die mehr als limit Scheiben enthält, bestimmst du die Anzahl der blauen Scheiben, die die Schachtel enthalten würde.

--hints--

arrangedProbability(20) sollte eine Zahl zurückgeben.

assert(typeof arrangedProbability(10) === 'number');

arrangedProbability(20) sollte 15 zurückgeben.

assert.strictEqual(arrangedProbability(20), 15);

arrangedProbability(100) sollte 85 zurückgeben.

assert.strictEqual(arrangedProbability(100), 85);

arrangedProbability(100000) sollte 97513 zurückgeben.

assert.strictEqual(arrangedProbability(100000), 97513);

arrangedProbability(1000000000) sollte 3822685023 zurückgeben.

assert.strictEqual(arrangedProbability(1000000000), 3822685023);

arrangedProbability(1000000000000) sollte 756872327473 zurückgeben.

assert.strictEqual(arrangedProbability(1000000000000), 756872327473);

--seed--

--seed-contents--

function arrangedProbability(limit) {

  return true;
}

arrangedProbability(20);

--solutions--

function arrangedProbability(limit) {
  // Based on https://www.mathblog.dk/project-euler-100-blue-discs-two-blue/
  let blue = 15;
  let discs = 21;

  while (discs < limit) {
    const nextBlue = 3 * blue + 2 * discs - 2;
    const nextDiscs = 4 * blue + 3 * discs - 3;

    blue = nextBlue;
    discs = nextDiscs;
  }
  return blue;
}