数当てAI (Number-Guess-Ai)

Other

概要

You think of a number between 1 and 100, and the computer tries to guess it. After each guess, you give feedback: higher, lower, or correct. The computer uses smart logic (binary search) to narrow down the possibilities and find your number in as few attempts as possible.
GitHub

本リポジトリは、対話型の数当てゲームをPythonで実装した非常にシンプルなプロジェクトです。ゲームの流れは、ユーザーが1〜100の範囲で数字を思い浮かべ、プログラムが推測を行い、ユーザーが「高い(lower)」「低い(higher)」「正解(correct)」のいずれかで応答するというもの。プログラム側は二分探索の考え方を使い、範囲を半分ずつ絞っていくことで最短で正解に到達します。教育用途やアルゴリズムのデモとして最適で、コードは軽量かつ理解しやすく設計されています。

リポジトリの統計情報

  • スター数: 9
  • フォーク数: 0
  • ウォッチャー数: 9
  • コミット数: 2
  • ファイル数: 2
  • メインの言語: Python

主な特徴

  • 二分探索(binary search)を用いた効率的な推測ロジック
  • CLIベースの対話型インターフェースで即実行可能
  • 学習・デモ用途に適したシンプルで読みやすいコード構成
  • 最小限の依存で軽量に動作

技術的なポイント

このプロジェクトの中核は、ユーザーのフィードバックを得ながら探索範囲を効率的に狭めていく「二分探索(binary search)」アルゴリズムの適用です。探索対象が1から100までの整数に限定されているため、二分探索を使うと最悪でも ceil(log2(100)) = 7 回程度の推測で正解に到達できます。アルゴリズムの具体的な流れは次の通りです:初期の下限を1、上限を100に設定し、毎回 (下限 + 上限) // 2 を現在の推測値とする。ユーザーの応答が「higher(もっと大きい)」であれば下限を推測値+1に更新、「lower(もっと小さい)」であれば上限を推測値-1に更新、「correct(正解)」であれば終了します。この更新を繰り返すことで、可能性のある候補数が指数的に減少します。

実装面では、CLIでの入力検証とユーザー体験が重要です。期待されるフィードバックは少数のキーワードなので、実装はシンプルですが誤入力に対する堅牢性(例:大文字小文字の違い、余分な空白、誤字への緩やかな対応)を持たせると実用性が高まります。また、境界条件の扱い(下限が上限を超えた場合の異常検知、ユーザーが矛盾するフィードバックを与えた場合のエラー処理)も実装の要です。現在のリポジトリは教育用途を想定しており、あえて簡潔に書かれていますが、拡張しやすい構造になっています。

拡張案としては、以下が考えられます:

  • GUI化(TkinterやWebフロントエンド)して視覚的に学習できるようにする
  • 自動プレイヤーと対戦するモード(乱数で応答を返すボット等)を追加してユニットテストを容易にする
  • 範囲をパラメータ化し、任意の範囲や浮動小数点数に対応する探索アルゴリズムへ拡張(バイナリサーチの考え方はそのまま適用可能)
  • 逆問題(ユーザーがコンピュータの数字を当てる)や確率的戦略(ランダム化や不確実性を加味した探索)など教育的なバリエーション

アルゴリズムの計算量は時間・試行回数ともに O(log N)(Nは範囲幅)で、空間計算量は O(1) です。実装自体は初心者にもわかりやすく、アルゴリズム教育・チュートリアルの素材として最適です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • main: file

(注)リポジトリは非常にシンプルで、実行に必要なファイルは最小限にまとまっています。main が実行スクリプトで、READMEには遊び方と実装の概要が記載されています。

まとめ

教育用途に最適な二分探索ベースのシンプルな数当てゲームです。

リポジトリ情報:

READMEの抜粋: You think of a number between 1 and 100, and the computer tries to guess it. After each guess, you give feedback: higher, lower, or correct. The computer uses smart logic (binary search) to narrow down the possibilities and find your number in as few attempts as possible. …