この記事ははてなエンジニア Advent Calendar 2018の18日目の記事です. 昨日はid:WindymeltのSmart::Argsのパーサを書いたでした. 明日の担当はid:hokkai7goです. 他の担当者の記事は割と業務っぽいものが多いですが, 今回は趣味っぽいゆるゆるのネタです. 社内でとある数学パズルを紹介したところAdvent Calendarに書いてくれとリクエストがあったので, 紹介します. 単に問題を紹介するだけでは面白くないので, コードを書いて解答できるようにしてみました. 問題 あなたは100人の囚人の一人です. 全員で以下のようなゲームをして, 見事勝利できれば全員釈放, 負ければ全員死刑となります. ゲーム開始と同時に全員別々の独房に入ります 独房内や通路で他の囚人とやりとりすることはできません ランダムに1人ずつスイッチの部屋に呼ばれます 十分
![プログラムで解く数学パズル: 囚人とスイッチの部屋の問題 - 解答の自動チェックのしくみ - 貳佰伍拾陸夜日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/67c3558f97b8070df8bc3d756015dc2ffc7db51e/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Ft%2Ftarao%2F20181217%2F20181217001954_original.png)