ヒットアンドブロー完全攻略!最短手数で当てるプロの推理術と必勝法
ヒットアンドブロー完全攻略!最短手数で当てるプロの推理術と必勝法の要点や背景をコンパクトにまとめました。全体像を一目で把握できます。
ヒットアンドブローは、計算機科学や情報理論の分野でも古典的な題材として研究されてきました。有名な解法アルゴリズムとして知られるのが、数学者ドナルド・クヌースが提唱した「ミニマックス法」です。
ミニマックス法では、「次にどのコールをすれば、最悪のヒントが返ってきた場合でも残る正解候補の最大数を最も小さくできるか」を毎ターン全探索して最適な一手を選択します。このアルゴリズムを用いれば、4桁(10文字中4文字重複なし)ルールであっても平均5.5手前後で確実に正解を特定することが数学的に証明されています。
このロジックは、Pythonを使えばわずか数十行のコードで実装可能です。itertools.permutationsを用いて5,040通りの全探索リストを生成し、判定結果に矛盾する要素をリストからフィルタリング(除外)していくスクリプトを作成することで、自分だけの自動推理ソルバーを構築できます。プログラミングの学習教材としても非常に優れた題材です。