このゲームで解く問題
コンピューターが0〜9の中から重複しない数字をいくつか選んで並べ、秘密の番号にします。プレイヤーは同じ桁数の数字を入力し、返ってくる「何ストライク何ボール」というヒントだけを頼りに番号を絞り込みます。どの位置が違うのかまでは教えてもらえないので、毎回のヒントを小さな論理パズルとして読み解くことになります。本質は消去法です。数千通りの候補のうち、そのヒントを出し得ないものを毎回消していくゲームで、運で一発で当たることもありますが、1回の予想がどれだけ候補を減らしたかを意識するだけで、同じ桁数でも試行回数は目に見えて減ります。海外では「Bulls and Cows」、日本ではヒット&ブロー(Hit and Blow)の名前で呼ばれる同系統の遊びが知られており、この画面ではストライク・ボールという野球の用語で表示しています。
ヒントの読み方
- ストライク(S): 数字も位置も合っている個数です。
- ボール(B): 数字は秘密の番号に含まれているが、位置が違う個数です。
- S+B: 入力した数字のうち、秘密の番号に入っているものの個数です。位置が分からなくても「どの数字が入っているか」だけを先に絞れます。
- アウト(0S0B): 入力した数字がすべて番号に含まれないという意味で、使った数字を以降すべて除外できます。
このツールでは秘密の番号も予想も重複のない数字に限られ、0〜9のどれでも先頭にできます(0123のような番号もあります)。桁数が違う入力、重複した数字、半角の0〜9以外の文字(全角数字など)は、エラー文を出すだけで試行回数には数えません。日本語入力をオンにしたまま全角で打つと受け付けられないので、半角で入力してください。
組み合わせ数の表
異なる数字n個を順番に並べる場合の数は 10×9×8×…(n個の積)です。1回の予想に対して返り得るヒントの種類は、S+Bがn以下の(S,B)の組のうち、「S=n-1かつB=1」という起こり得ない組を除いた数になります。表はページの生成時に計算した値です。
| 桁数 | 秘密の番号の総数 | 返り得るヒントの種類 |
|---|---|---|
| 3桁 | 720通り | 9種類 |
| 4桁 | 5,040通り | 14種類 |
| 5桁 | 30,240通り | 20種類 |
1回の予想が運べる情報量は返事の種類の数を超えられません。4桁なら5,040通りを1回で最大14グループにしか分けられず、3回で見分けられる返事の並びは 14×14×14=2,744通りにとどまるため、どんな方法でも3回では必ず当てられるとは言えません。1〜2回で当たるのは運の領域です。
最初の一手が候補をどう分けるか
4桁で最初に0123と入力したとき、5,040通りの番号がそれぞれどのヒントになるかを全数計算した結果です。
| 返るヒント | 残る候補数 | 割合 |
|---|---|---|
| 0S1B | 1,440 | 28.6% |
| 0S2B | 1,260 | 25.0% |
| 1S1B | 720 | 14.3% |
| 1S0B | 480 | 9.5% |
| アウト(0S0B) | 360 | 7.1% |
| 0S3B | 264 | 5.2% |
| 1S2B | 216 | 4.3% |
| 2S0B | 180 | 3.6% |
| 2S1B | 72 | 1.4% |
| 3S0B | 24 | 0.5% |
| 0S4B | 9 | 0.2% |
| 1S3B | 8 | 0.2% |
| 2S2B | 6 | 0.1% |
| 4S0B | 1 | 0.0% |
最も多いヒントが全体の4分の1を超え、4ストライク(正解)は5,040通り中1通りだけです。残り候補が多いヒントは運の悪い結果、1S3Bや2S2Bのような珍しいヒントは候補を大きく減らす運の良い結果と言えます。表に3S1Bが出てこないのは、起こり得ないヒントだからです。
解き方の方針
- 最初の2〜3回は、含まれる数字を探します。共通する数字の少ない予想を重ね、S+Bの合計を集めます。たとえば0123の合計が2、4567の合計が1なら、残りの1個は8か9のどちらかです。
- 以降は、これまでのすべてのヒントと矛盾しない番号だけを予想します。そうすれば毎回正解の可能性があり、外れても候補が確実に減ります。上の「残りの候補数を表示」をオンにすると、予想がどれだけ候補を減らしたか確認できます。
- 数字の位置は入れ替えて確かめます。2つの数字を入れ替えただけの予想を比べ、ストライクがどう変わるかを見ると、その2か所の位置関係が分かります。
- アウトが出たら、その数字をすべて消します。アウトは最も情報量の多い結果の一つです。
単純な方法で何回かかるか
「これまでのヒントと矛盾しない番号のうち、数字の小さい順で最初のものを毎回予想する」という単純な方法を、すべての秘密の番号に当てはめて回数を数えた結果です。3桁と4桁は全数、5桁は計算量の都合で10個に1個(3,024通り)を使いました。
| 桁数 | 平均回数 | 最も多くかかった回数 |
|---|---|---|
| 3桁 | 約5.27回 | 9回 |
| 4桁 | 約5.56回 | 9回 |
| 5桁(標本) | 約6.01回 | 9回 |
これはこの単純な方法の測定値であり、最善手の平均ではありません。候補をより均等に分ける予想を選べばもっと少なくなる可能性がありますが、その限界値は確認していないため載せていません。
検算した例
例1 ヒントの計算。 秘密の番号が1234のとき、1243を入力すると1と2は位置まで合っているので2ストライク、4と3は数字だけ合っているので2ボールです。4321は4つの数字がすべて含まれるのに位置が一つも合わず、0S4B。5678は共通の数字がなくアウトです。
例2 4桁(秘密の番号8051)。 上の単純な方法だと7回目に正解します。
| 回 | 入力 | ヒント | 入力前の候補数 |
|---|---|---|---|
| 1 | 0123 | 0S2B | 5040 |
| 2 | 1045 | 1S2B | 1260 |
| 3 | 1254 | 1S1B | 72 |
| 4 | 1406 | 0S2B | 25 |
| 5 | 5034 | 1S1B | 4 |
| 6 | 7051 | 3S0B | 3 |
| 7 | 8051 | 4S0B | 2 |
最初の0S2Bだけで5,040通りが1,260通りに減り、3回目の後には数十通りまで絞られます。最後は残った候補が1か所だけ違うため、なかなか確定しません。
例3 3桁(秘密の番号729)。 同じ方法で 012(0S1B)→134(アウト)→256(0S1B)→507(0S1B)→680(アウト)→729 と6回で当たります。候補数は720→252→80→24→6→1。アウトが2回出たおかげで、使った数字をまとめて消せたのが効きました。
よくある間違いと限界
- S+Bの合計から位置まで決めてしまう間違いが多いです。合計は「含まれる個数」で、位置は別の並べ方を比べて初めて分かります。
- 先頭に0が来る可能性を忘れること。0はどの位置にも入り得ます。
- 残り候補数の表示は学習には便利ですが、オンで勝った記録とオフで勝った記録は別物として考えてください。
- 秘密の番号はブラウザのMath.randomで決まります。遊び用の乱数で、セキュリティや抽選用ではありません。
- 試行の履歴や結果は保存されません。再読み込みで消え、端末間の同期もありません。
結果の活かし方
終わったら履歴を最初の予想から順に見直し、各予想で候補がどれだけ減ったかを考えてみてください。ほとんど減っていない予想は、すでに分かっている情報を繰り返していた可能性が高いです。3桁を安定して5回前後で解けるようになったら4桁へ、その次に5桁へ進むのが自然な順序です。
よくある質問
同じ数字を2回入力してもいいですか?
いいえ。予想も重複のない数字に限られます。重複した数字を入力するとエラーが出て、試行回数は増えません。
先頭が0になることはありますか?
あります。0〜9をシャッフルして先頭からn個を取る仕組みなので、0123のような番号も出ます。3桁の総数が 10×9×8=720通りなのはそのためです。
4桁で3ストライク1ボールが出ないのはなぜ?
3桁が位置まで合っていれば、番号の中で未確定の位置は1か所だけです。最後に入力した数字が番号に入っているなら、必ずその1か所にあるのでストライクになり、入っていなければヒントなしです。ボールになれる位置が残っていないため、3S1Bは起こりません。
なぜ「野球」と呼ぶのですか?
位置まで合えばストライク、数字だけ合えばボールという野球の用語を借りた名前です。ヒット&ブロー、Bulls and Cowsなど同系統の遊びには別の呼び名もあり、細かな由来は資料によって異なるため、ここでは断定しません。
何回で当てれば上手いと言えますか?
上の単純な方法は4桁で平均約5.6回でした。これを一つの目安にできますが、運や最初の予想で大きく変わるので、1回の結果ではなく数回分の平均で見るのがおすすめです。
あわせて遊びたい推理・対戦ゲーム
文字で推理するハングマンゲームや英単語当てゲーム、 対戦なら五目並べや三目並べ、一人で論理を組み立てるナンプレもどうぞ。