ブラックジャック
元のKOTHチャレンジに取り組んでいたので、別のチャレンジを思いつきました。私にとって、これらのAIチャレンジの楽しみは、非常にシンプルなゲームを微妙にプレイする比較的シンプルなボットを改良することです。カードゲームの確率的性質のため、ブラックジャックはTPDと同様に興味深いKOTHゲームになる可能性があると思います。
すべてのルールは、このウェブサイトのBlackJack with shoesの説明に基づいています
カードとデッキに関する規則
- ボットは4人の競技者と1人のディーラーのテーブルでプレーします
- 1つの靴(シャッフルデッキ)は、すべてのプレイヤーとディーラーによって共有されます使い果たされるまで、その時点で新しいランダムにシャッフルされたデッキが追加され、プレイが続行されます。ボットは(この時点では)この新しいデッキの追加について通知されません。この機能の欠如が十分な苦痛/トラブルを引き起こす場合、そのような通知は追加されるかもしれません。
- ラウンドごとに10のバイインがあり、カードは無料です
- パーフェクト/理想的なハンドのスコアは21です
- すべてのフェイスカードの値は10です
- すべての数字カードはその価値があります
- エースは11または1の価値があります。これは、ボットではなくフレームワークによって自動的に処理されます。
- あたりとしてのルール、すべてのプレイヤーのカードがフェイスアップを配らと表示されています。ディーラーのカードの1つは裏向きで、もう1つは表向きです。
得点
- エースを11として使用する21を超えるスコアは、エースの値を1に強制的に下げます。
- 21を超えるスコアは、ボットを「バスト」する21のしきい値より下に強制することはできません。
ディーラー
- ディーラーは彼がバストするまで引きます、または17 点を超えた時点で、彼は立つことを強制されます
ベットとチップ
- 各ラウンドの開始時に、バイイン10のは、そう、最低があり、充電されている株式 10のは、最小賭け 1のNOTE -賭けは賭けの引数の絶対値であるので、気にしないでください負の賭けをしようとしています。
- バイインを買う余裕のないボットはコンテストから除外されます
- 賭けをするとき、ボットは持っているチップよりも多く賭けることはできません
- 賭けが可能であれば、賭けたチップはボットから即座に取り除かれ、賭け金に追加されます
- ベットに勝つと、ボットに2xチップがベットされます。ただし、ボットのチップからベットが差し引かれるため、ボットは偶数になり、ベットの1倍になります。
- ボットはディーラーのスコアよりもスコアが大きい場合にのみベットに勝ちます
ゲームプレイ内訳
片手
- ゲームが開始されると、各プレーヤーは1枚のカードを繰り返し配られ、チップから10ドルのバイイン料金/最小ベットが差し引かれます。
- ディーラーが描く
- 2回目のパスが行われ、別のカードがすべてのプレイヤーに配られます。
- ディーラーが描く
- 次に、(それらが配られたのと同じ順序で)各ボットは、「プログラマインタフェース」セクションで説明したように実行されなければならない行動を起こすか、立っています。ベットは動きと見なされます。ベットがボットのさらなる移動能力に影響しないことに注意してください。ベットしてからカードを引くことは非常に可能であり、複数のカードを引いて、立っている前にそれらをベットすることもできます。
- すべてのボットが破壊または立ち上がると、ディーラーは17のしきい値までプレイします
- ボットのスコアはディーラーのスコアと比較され、ベットは勝ち負けになります
ワンラウンド
5つのハンドを構成すると見なされます。ハンド間では、競技者のリストがソートされてプレーヤーが削除され、さらに処理されて、すべてのボットが同じ数のハンドをプレイするようにします(エントリ数が4つのボットテーブル間で均等に分割されないという事実の規定) )。
プログラマーのインターフェースと法的動き
CardSharkファイルに記載されているとおり:
# DOCUMENTATION
# INPUT SPECIFICATION
# $ ./foo.bar <hand-score> <hand> <visible cards> <stake> <chips>
# <hand-score> is the present integer value of the player's hand.
# <hand> is a space-free string of the characters [1-9],A,J,Q,K
# <visible cards> every dealt card on the table. when new shoes are brought
# into play, cards drawn therefrom are simply added to this list
# NOTE: the first TWO (2) cards in this list belong to the dealer.
# one however will be "hidden" by a "#". the other is visible.
# !!! THE LIST IS CLEARED AT THE END OF HANDS, NOT SHOES !!!
# <stake> the number of chips which the bot has bet this hand
# <chips> the number of chips which the bot has
# SAMPLE INPUT
# $ ./foo.bar 21 KJA KQKJA3592A 25 145
#
# OUTPUT SPECIFICATION
# "H"|"S"|"D"|"B" (no quotes in output)
# "H" HIT - deal a card
# "S" STAND - the dealer's turn
# "D" DOUBLEDOWN - double the bet, take one card. FIRST MOVE ONLY
# "B 15" BET - raises the bot's stakes by $15.
(現在)カードファイルに記載されているとおり:
# class CARD
# card is a container for representing paper playing cards in
# otherwise fairly functional programming.
# letter()
# gets the letter used to identify the card in a string
# LETTER MAPPINGS
# Ace : 'A'
# Two : '2'
# Three : '3'
# Four : '4'
# Five : '5'
# Six : '6'
# Seven : '7'
# Eight : '8'
# Nine : '9'
# Ten : 'T'
# Jack : 'J'
# Queen : 'Q'
# King : 'K'
# "Hidden": '#'
スコアリングシステムのソースコードはこちら
サンプルボット
リム17
#!/usr/bin/env python
import sys
s = sys.argv
if int(s[1]) < 17:
print "H"
else:
print "S"
エントリー言語
現在、Java、c / c ++、Python、およびLispがサポートされています。他の言語の提出物を含めるための合理的な努力がなされますが、最終コンテストはLinuxボックスで実行されることを忘れないでください。
勝者の選択
勝者は、まだ決定されていないテーブルとラウンドの数で一貫してほとんどのチップを獲得したボットの作者です。 受賞者は6月3日に発表されますが、まだ提出されている提出物がある場合、発表は遅れる可能性があります。 コンテストは無期限に延長されました。