27
正直ロック、紙、はさみ
多くの人がRPSをチャンスのゲームだと考えています。両方のプレイヤーが予想外にプレイする場合、最善の戦略はランダムにプレイすることです。ただし、少し予測可能性を紹介しましょう。 各ボットは、同時にプレイする内容を他のボットに伝える機会があります。その後、各ボットが他のプレイヤーが発表した内容を知るための一時停止があります。その武器をプレイした場合、勝ち負けまたは引き分けのポイントに加えて1ポイントを獲得すると発表しました。 勝利には2ポイント、引き分け、1ポイント、損失0ポイントの価値があります。 Honest Bot Dishonest Win 3 2 Draw 2 1 Loss 1 0 正直であることはあなたの最大の利益です(しかし、相手があなたを信じないようにすることも)。 試合はラウンドロビン形式で行われ、目的はあなたがプレイする試合全体であなた自身の合計スコアを最大にすることです。 I / O形式: ボットは、4つの引数を取るPython 2.7関数であり、一意の名前(提出物を表すために使用される)を持つ必要があります。 最初の2つの引数は、常に順番になります。対戦相手の過去の動きと、それに続く過去の動きです。これらは、最初のラウンドから最新のラウンドまでの順番のリストになります。各インデックスには、対戦相手が行ったと主張した動きのリストと、実際に行った動きが含まれます。 次の2つの引数により、ボットは「正直な」ラウンドか「実際の」ラウンドかを判断できます。「正直な」ラウンドの場合、両方ともNoneになります。それが「本物の」ラウンドである場合、それらは順番に、対戦相手が彼らが行うと宣言した動きであり、その後、あなたが行うと宣言した動きです。 動きを表すすべての引数または引数の部分は、それぞれ「R」、「P」、および「S」を使用して、岩、紙、およびはさみを表します。 関数は、岩の場合は「R」、紙の場合は「P」、はさみの場合は「S」を返します。他の値を返すことができるボットは失格となります。 各ボットは、他のすべてのボットに対して200回、それ自体で100回実行されます。目標は、競争の終わりに最も多くのポイントを持つボットになることです。 コメントでの議論に関しては、提出物はいかなるファイルからも読み取りも書き込みもできません。 例: これらは、すぐにまとめた4つのボットの例です。彼らは追加のボットとして競争に参加します。最後まで負けた場合は、やるべきことがいくつかあります。 def honestpaper(I,dont,care,about_these): return "P" def honestrock(I,dont,care,about_these): return "R" def honestscissors(I,dont,care,about_these): return "S" import random def randombot(I,dont,care,about_these): return random.choice(["R","P","S"]) コントローラ: そして、これが私が使用するコントローラーです。新しい投稿は最初にインポートされ、bot_map辞書に追加されます。 …