パーティーで、ゲームLCRを紹介されました。スキルがなく、ランダムなチャンスしかないので、今は素晴らしいゲームではありません。でも、それでコードを書くことができると思ったので、Rでゲームをモデル化する簡単なプログラムを作りました。
ゲームのルールがWikipediaから変更され、私たちのプレイ方法に一致しました:
各プレイヤーは少なくとも3つのチップを受け取ります。プレーヤーは順番に3つの6面サイコロを振って、それぞれに片側に「L」、「C」、「R」と残りの3面に1つのドットが付いています。プレーヤーは、投げられた「L」または「R」ごとに、左または右にそれぞれ1つのチップをプレーヤーに渡す必要があります。"C"は、チップが中心(ポット)であることを示します。ドットは効果がありません。
プレーヤーのチップが3つ未満の場合でも、ゲームに残っていますが、チップの数は、3つすべてをダイスに振るのではなく、自分のターンにダイスを振る数です。チップが0のプレイヤーは、自分のターンにサイコロを渡しますが、他のプレイヤーからチップを受け取り、それに応じて次のターンを取ることができます。勝者はチップを中央に置いた最後のプレーヤーです。
コンテスト:プレーヤーの数と開始チップの数を入力し、LCRのゲームをシミュレーションして、各プレーヤーがロールした後のゲームの状態を示す、選択した言語でプログラムを作成します。
たとえば、ゲームは次のように出力されます。
[[[3,3,3,3],0],[[1,4,3,4],0],[[1,4,3,4],0],[[1,4,1,4],2],[[1,4,1,2],4],
[[0,4,1,3],4],[[0,3,2,3],4],[[0,3,0,3],6],[[0,3,1,1],7],[[0,3,1,1],7],
[[2,0,1,1],8],[[2,0,0,1],9],[[2,0,0,0],10],[[0,1,0,0],11],
[[1,0,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[0,0,0,0],12]]
ht:ジョナサンアラン
出力はこのように正確である必要はありませんが、サイコロの目、各プレーヤーのチップ数、および各ターンのセンターのチップ数を簡単に見分けることができます。
それはコードゴルフなので、最短のコードが勝ちます。
[[[3,3,3,3],0],[[1,4,3,4],0],[[1,4,3,4],0],[[1,4,1,4],2],[[1,4,1,2],4],[[0,4,1,3],4],[[0,3,2,3],4],[[0,3,0,3],6],[[0,3,1,1],7],[[0,3,1,1],7],[[2,0,1,1],8],[[2,0,0,1],9],[[2,0,0,0],10],[[0,1,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[0,0,0,0],12]]ます。