「1〜100の中で何か数字を考えて」と人に聞かれたら、何回で当てられる?適当に言うと、最悪100回かかる。でもプログラムは平均7回で当てるよ。これが という、コンピュータが得意な考え方。
1. 真ん中で聞いて、半分に絞る
プログラムの作戦はこう: 1. 「50 ですか?」と聞く 2. 答えが「もっと大きい」なら、1〜50 は捨てて、51〜100 だけ考える(半分に減った!) 3. 「75 ですか?」と聞く 4. もっと大きい?じゃあ 51〜75 を捨てて、76〜100 5. ...という調子で毎回半分にする。100 → 50 → 25 → 13 → 7 → 4 → 2 → 1。7回で必ず当たる。

2. 数あてAIのコード
colab で動かしてみる
Python
print("1〜100で数字を1つ考えて。私がそれを当ててみせる!")input("考えたら Enter を押してね")
low = 1high = 100count = 0while low <= high: guess = (low + high) // 2 # 真ん中 count += 1 print(f"\n第{count}回:その数字は {guess}?") answer = input("(正解=1, もっと大きい=2, もっと小さい=3): ") if answer == "1": print(f"やった! {count}回で当てたよ。") break elif answer == "2": low = guess + 1 elif answer == "3": high = guess - 13. 数学の不思議:
100個の中から7回。じゃあ 1000個 だと?答えは 10回(半分にし続けると10回で1個まで減る)。100万個でも 20回! これが という考え方。「2倍ずつ増やしたら何回で大きくなるか」を表す数学。100=2の約7乗、1000=2の約10乗、100万=2の約20乗。
計算量 O(log n) の世界
は で と書く(EP.14 で詳しく扱う)。これは「問題が10倍になっても、3〜4ステップしか増えない」という、コンピュータの最強カテゴリの1つ。
次回予告
次回(EP.10)は、動物の鳴き声でクイズを作るよ。録音した音をプログラムで再生する。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。