囚人のジレンマ

息子が教えてくれた「囚人のジレンマ」を試してみるべく、プログラムを書いた。
囚人のジレンマとは、、、。
「二人の囚人がいて、両者ともに相手を裏切らなければ両者が得をし、片方だけが
裏切った場合は裏切った方が少し得をし裏切られた方はものすごく損をし、
両者が裏切った場合は両者がそこそこ損をする」という状況下で、自分が囚人の
一人なら、どうするのが得かという問題。だと思う。
当然、一回限りなら、「裏切る」が正解かと思うのだが、何回もやるとなると、
いろいろ戦略が出て来るという。
息子は、9種類の戦略を考えたので、実験してほしいというのだ。
 
で、今日は、部屋掃除があったのだが、いや、部屋掃除があったからこそ、
プログラミングに逃げて、いや、プログラミングをやってしまった。
拡張性をあんまり考えずに、戦略ごとに関数を書けば一瞬で終わる。
そこで、息子には、「本気を出せば10分で書ける」と豪語したところ、かなり感心
されてしまい、モチベーションがさらにアップ。
 
ところが、プログラムを書きはじめると、「異なる戦略を持ったAI同士の戦い」を
考えたり、「えーと。戦略を取り替えるんだから、デザインパターンのStrategyだな。
ちゃんと、実装してみるかぁ」なんて、凝りだして、トータルで2時間くらいかかった。
それだけなら、まあ、どうということもないが、爆発しそうになる妻をなだめるために
近所のお店に送ってったりなんだりで、結局、一日仕事だった。(涙)
 
で、自分なりに満足の行くものになったが、当然、コマンドプロンプト窓である。
息子は、「えー、なんで、黒い画面なの」。あのねー。
 
それにしても、今回は、上記のもろもろでプレッシャーがかかり、最速のプログラミング
だったと思う。
ダカダカとキーボードを叩く自分に酔ってしまうほど。