読者です 読者をやめる 読者になる 読者になる

PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 205 / サイコロゲーム

ピーターは4面のサイコロを9つ持っている。サイコロの各面には1, 2, 3, 4と書いてある。コリンは6面のサイコロを6つ持っている。サイコロの各面には1, 2, 3, 4, 5, 6と書いてある。

ピーターとコリンはサイコロを投じ,出た目の合計を比べる。合計が多い方が勝ちである。出た目の合計が等しければ引き分けになる。

ピーターがコリンに勝つ確率はいくつだろうか? 10進7桁にroundし, 0.abcdefg という形で回答欄に入力せよ。

Problem 205 - Project Euler


ブルートフォースとまではいきませんが,ストレートに場合の数を計算して解きました。

Reduce で方程式の整数解を求めます。たとえばコリンの目が6,7になるのは次のようなときです。

解が1個のときは各変数の値を &&(=「かつ」)で結ぶのに対し,解が複数個あるときはそれを( )で囲んで ||(=「または」)で結んだものを返します。これによって個数を数える Length の振る舞いが変わるので,解が1個の場合だけ別扱いとして後は普通に計算しました。