12
天体官僚制KoTH
中国帝国では、社会のランクは出生や富ではなく、帝国試験で優れている人の能力によって決定されました。神の天の支配者である玉皇帝は、彼のすべての主題を調べて彼らの価値を決定し、次に中国を統治するために神の使命を誰に与えるかを求めました。 官僚制のルール: 神官官僚制は、0から始まる負ではない整数値のランクで構成されます。官僚制の各メンバー(ボット)は1つのランクに属します。各ランクは任意の数のメンバーを保持できますが、上記のすべてのランクが空でない限り空にすることはできません ゲームの開始時に、すべてのメンバーのランクは0です 毎ターン、官僚の各メンバーは試験に答えなければなりません。試験は、リストのブール値を正しく推測することで構成されています。リストの長さは、メンバーの上のランクの数です。 試験問題は、上記のランクのランダムなメンバーによって準備されます。最高ランクのメンバーは質問を直接受け取りますJadeEmperor(以下を参照) 試験で少なくとも50%を獲得したメンバーは、プロモーションの対象となります。試験の得点が50%未満の会員は降格の資格があります。 降格の資格があるメンバーのランクは、下のランクに昇格する資格のあるメンバーがいる場合にのみ1減少します。 昇格の資格があるすべてのメンバーは、ランクが空にならない限り、ランクが1ずつ上がります。 すべての資格のあるメンバーを降格または昇格できるわけではない場合、優先順位は(降格の)最も低いメンバーになります。最高の(プロモーション用)スコア。ネクタイはランダムに壊れます。 メンバーのランクは、各ターンで最大1つまでしか変更できません。 ゲームのルール: 各ボットには、ゲームの開始時にIDがランダムに割り当てられますが、そのIDはコース中に変更されることはありません。のJadeEmperorIDは-1で、他のすべては0から始まる連続した非負のIDです。 すべてのボットが同時に競合する ゲームは100ターン実行され、ボットのスコアはその期間中に所有した平均ランクです。 合計スコアは、1000ゲームを実行し、結果を平均することにより取得されます。 各ボットは、次の4つの機能を実装するPython 3クラスです。 ask(self,n,ID)、list長さnのブール値を返すことにより試験を行います。IDは、そのリストを推測する必要があるボットのIDです。ask()任意のボットの単一ラウンド中に何度も呼び出すことができますが、まったく呼び出せません。 answer(self,n,ID)、これはlist長さnのブール値のa を返すことにより試験に答える試みです。IDは、ask()試験を生成したボットのIDです。answer()各ボットのラウンドごとに1回だけ呼び出されます。 update(self,rankList,ownExam,otherExams)コントローラーがすべての昇格と降格を実行すると呼び出されます。その引数は次のとおりです。すべてのボットのIDですべてのランクをリストする整数のリスト。2つのリストで構成されるタプル。最初は試験の質問、次にボットが出した回答(忘れた場合に備えて)。次に、同様に試験回答ペアで構成されるタプルのリスト。今回はボットが配布したすべての試験について。 __init__(self, ID, n) ボットに独自のIDと競合するボットの数を渡します。 クラスは私的使用のために他の機能を実装することができます さらに変数を定義し、それらを使用して過去の試験に関するデータを保存することは明示的に許可されています。 メタ効果のプログラミングは禁止されています。つまり、他のボットのコード、コントローラーのコードに直接アクセスしようとすると、例外などが発生します。これは試験の戦略のコンテストであり、コードハッキングのコンテストではありません。 お互いを助けようとするボットは、メタ効果を介してそれを行わない限り、明示的に許可されますが、純粋に通過する情報によって update() 他の言語は、Python 3に簡単に変換できる場合にのみ許可されます。 ライブラリnumpyはとしてインポートされnpます。バージョンは1.6.5です。つまり、古いランダムライブラリを使用します。numpy 1.7をお持ちの場合numpy.random.mtrand、テスト用に古い関数を使用できます。mtrandを削除することを忘れないでください。 実行時にボットが例外を発生させた場合、失格となります。コードが非常に難読化されているため、ask()またはanswer()が呼び出されたときに長さnのリストを生成するかどうかを判断できないボットも、プリエンプティブに失格になります。ディープコピーの出力を強制するボットは、スコアで-1を取得します。 クラス名は一意である必要があります 1人につき複数のボットが許可されますが、繰り返し更新されるボットの最新バージョンのみが取得されます。 ボットの類似性について混乱があるようです。 別のボットのコピーを投稿することはできません。これは、この課題に実際に適用される唯一の 標準的な抜け穴です。 あなたがされている許可され、他の人のボットを含む他のボット、とのコードを共有しているために。 そのようなカーボンコピーボットの数が成功するために最低限必要であることを証明できる場合を除き、戦略に対する些細な変更(質問生成のシードの変更など)のみが異なるボットを送信することはできません。彼らの戦略の制定(通常、協力のために2つのボットになります)。 ボットの例: JadeEmperor常にゲームの一部ですが、競合しません。彼は最高ランクのボットの試験のジェネレーターとして機能します。彼の試験はランダムですが、均一ではなく、スマートボットが前進する方法を可能にします。 class JadeEmperor: def __init__(self): pass …