クラップスは、カジノでよくプレイされるかなりシンプルなサイコロゲームです。あなたがギャンブラーでなくても(私はそうではありませんが)、それでもかなり面白いゲームです。ルールは次のとおりです。
クラップスのゲームの開始時に呼ばれるものがありますカムアウトラウンド。プレイヤーは2つのd6(6面ダイス)を振って、2つのダイスを追加します。結果が7または11の場合、その人が自動的に勝ちます(これは自然として知られています)。結果が2、3、または12の場合、その人は自動的に負けます(これは拍手crとして知られています)。それ以外の場合、結果はポイントラウンドのポイントとして設定されます。
この後、ポイントラウンドが始まります。ポイントラウンド中、プレイヤーは前のラウンドから7または彼/彼女のポイントをロールするまで、連続して2 d6sをロールしなければなりません。人が7を振った場合、負けとなります。彼らがポイントを転がすと、彼らは勝ちます。
チャレンジ
がらくたのゲームをシミュレートする単純なプログラムを実装します。ユーザーがカムアウトラウンド中にナチュラルまたはクラップアウトをロールした場合、プログラムは「Natural:」または「Crapping out:」を出力し、その後にサイコロを出して終了します。それ以外の場合は、「Point:」に続いてポイントが出力されます。次に、ポイントラウンド中に、7またはポイントに達するまで、すべてのダイロールを出力する必要があります。人が勝った場合、出力する必要があります"Pass"
。彼らがそれを失えば出力する必要があります"Don't Pass"
。
参照実装
Groovy、277バイト
def a={return Math.random()*6+1};int b=a()+a();(b<4||b==12)?{println"Crapping out: "+b}():{(b==7||b==11)?{println"Natural: "+b}():{println"Point: "+b;for(;;){int x=a()+a();println x;(x==7)?{println"Don't Pass";System.exit(0)}():{if(x==b){println"Pass";System.exit(0)}}()}}()}()
サンプル出力
Natural: 7
Crapping out: 3
Point: 9
4
8
11
9
Pass
そして
Point: 5
3
7
Don't Pass
これはcode-golfなので、最短のコードが優先されます。
(免責事項:このチャレンジは、ギャンブルを促進することを意図したものではありません。家は常に勝ちます。)
You can't make your program shorter by picking a random number between 1 and 12 for the die roll; it must be two numbers picked between 1 and 6.
-[1、6]の2つの一様なランダム値を追加するのと同じ分布から[1、12]のランダム値を選択するのはどうですか?