24
囚人のジレンマv.3-ペトリジレンマ
気違いの科学者がバクテリアの新種を作成しました!彼はそれをNoblus Gentlemanusと名付けることにしました、その挙動を観察した後。しかし、彼のバクテリアは食料を使い果たし、戦争を宣言しました。彼らは他のバクテリアの死体を収穫して、自分のコピーを作成するのに十分な食料を得ることができるからです。この細菌には、お気に入りのゲームであるPrisoner's Dilemmaをプレイする上で異なる戦略を持っている多くの異なる亜種があります。それぞれ異なる亜種から5つの細菌があります。Prisoner's Dilemmaでは、2人のプレイヤーのそれぞれが同時に欠陥または協力を選択します。1人のプレイヤーが協力を選択し、もう1人がデフォルトを選択した場合、デフォルト者は2ポイントを獲得し、協力者は3ポイントを失います。両方のプレイヤーが協力することを選択した場合、両方のプレイヤーが1ポイントを獲得します。両方のプレイヤーがデフォルトを選択した場合、両方のプレイヤーが1ポイントを失います。 貴族の紳士であるバクテリアは、反復囚人のジレンマの200ラウンドの長いゲームをプレイすることにより、この戦争と戦うことに決めました。各決闘の敗者は自殺し、勝者は自分自身をクローンできます。同点の場合、両方の細菌は生きたままですが、どちらも自身をクローン化することはできません。さらに、試合のすべてのバクテリアは、ポイントの10%以上を次の試合に持ち込みます。クローンは、クローンされた細菌のポイントを引き継ぎます。また、毎ターン10分の1の確率で、1つのバクテリアが別の亜種に変異し、ボーナスポイントが0になります(このランダム性に関する苦情があれば、削除できます)。細菌が細菌の亜種の数に10を掛けた数に等しい数のこれらの決闘を行った後、気違いの科学者は細菌が存在するペトリ皿を誤って落とし、そしてすべてのバクテリアは新しい食物源を獲得し、決闘を終えます。これは通常の反復囚人のジレンマコンテストとは異なります。これは、全体で最も多くのポイントを獲得しようとするのではなく、キャリーオーバーポイントとの1対1の決闘を伴うためです。これにより、特定の戦略の効果が大きく変わります。 各バクテリアは、ターンの開始時に次の形式で入力を受け取ります:(ターン番号、現在のポイント、敵ポイント、あなたの以前の動き]、敵の前の動き[同じ形式で])。 入力する4つのサンプル戦略を以下に示します。実際、Defectorは非常に単純ですが、勝つ可能性があると思います。 Tatのシジュウカラ def titfortatfunc(counter, mypoints, enpoints, mylist, enlist): if counter==0 or enlist[counter-1] == "c": return "c" else: return "d" ランダムピック from random import choice def randompickfunc(counter, mypoints, enpoints, mylist, enlist): if counter == 199: return "d" else: return choice(["d", "c"]) 協力者 def cooperatorfunc(counter, mypoints, …