Files
freeCodeCamp/curriculum/challenges/japanese/10-coding-interview-prep/project-euler/problem-376-nontransitive-sets-of-dice.md
2022-04-02 17:46:30 +09:00

2.5 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5900f4e51000cf542c50fff7 問題 376: サイコロの非推移的集合 5 302038 problem-376-nontransitive-sets-of-dice

--description--

通常とは異なる目を持つ、以下のようなサイコロの集合について考えます。

$$\begin{array}{} \text{サイコロ A: } & 1 & 4 & 4 & 4 & 4 & 4 \\ \text{サイコロ B: } & 2 & 2 & 2 & 5 & 5 & 5 \\ \text{サイコロ C: } & 3 & 3 & 3 & 3 & 3 & 6 \\ \end{array}$$

ゲームでは、2 人のプレイヤーが交互にサイコロを選び、振ります。 最大の目を出したプレイヤーが勝者です。

先手がサイコロ A を選び、後手がサイコロ B を選んだ場合

P(\text{後手が勝つ確率}) = \frac{7}{12} > \frac{1}{2}

先手がサイコロの B を選び、後手がサイコロ C を選んだ場合

P(\text{後手が勝つ確率}) = \frac{7}{12} > \frac{1}{2}

先手がサイコロの C を選び、後手がサイコロ A を選んだ場合

P(\text{後手が勝つ確率}) = \frac{25}{36} > \frac{1}{2}

このように、先手がどのサイコロを選んでも、後手が別のサイコロを選んで勝つことができる確率は 50% を超えます。 このような性質を持つサイコロの集合を、サイコロの非推移的集合と呼ぶことにします。

非推移的サイコロの集合がいくつ存在するのかを調べてみます。 以下の条件を仮定します。

  • 6 面体で、各面に 1 から N までの目が書かれたサイコロが 3 つあります。
  • サイコロのどの面に目が書かれているかに関係なく、同じ目の集合を持つサイコロは同じものとみなされます。
  • 複数のサイコロで同じ目が出る場合があります。両方のプレイヤーが同じ目を出した場合、どちらも勝ちません。
  • サイコロの集合 \\{A, B, C\\}, \\{B, C, A\\}, \\{C, A\\} は同じ集合です。

N = 7 のとき、そのような集合は 9780 個存在します。

N = 30 のとき、そのような集合はいくつ存在しますか。

--hints--

nontransitiveSetsOfDice()973059630185670 を返す必要があります。

assert.strictEqual(nontransitiveSetsOfDice(), 973059630185670);

--seed--

--seed-contents--

function nontransitiveSetsOfDice() {

  return true;
}

nontransitiveSetsOfDice();

--solutions--

// solution required