ヒット&ブローのルールと攻略
ヒントはヒットとブローの2つの数だけ。それを頼りに、隠された4桁の数字を割り出します。ルールは3行で済みますが、 どう絞り込むかに腕が出ます。このページは、初めての人が先に読むところから、候補が具体的にどこまで減るかを 数え上げた結果まで、順に説明します。
ヒット&ブローはどんなゲームか
一方が数字を決めて隠し、もう一方がそれを当てます。当てる側は4桁の数字を宣言し、答えを持つ側は2つの数だけで 返します。正解そのものは最後まで教えません。この2つの数を何回か重ねていくことが、ゲームのすべてです。
韓国では野球の用語を借りて「数字野球」と呼ばれ、英語圏では Bulls and Cows の名前で知られています。日本語では 「ヒット&ブロー」と呼ばれています。紙と鉛筆だけで遊べるので、コンピューターよりずっと古くからあります。 数字を扱っているように見えて、足し算も引き算も出てきません。そのため、数字の代わりに10色を使っても、 ゲームはそのまま成り立ちます。
運の割合は正確に数えられます。重複しない4桁の数字は、1桁目が10通り、2桁目が残り9通り、3桁目が8通り、 4桁目が7通りで、全部で5040通りです。あてずっぽうで一発で当たる確率は5040分の1ですが、論理で絞り込めば、 後で示すとおり、たいてい5回か6回で終わります。この差がゲームの面白さです。
基本ルール
答えの形
答えは、0から9までの数字から4つを選んで並べたものです。4つの数字はすべて違い、同じ数字は出てきません。 先頭が0でもよく、0473のような数字も答えになります。これを忘れると、最初から候補の10分の1近くを見落とします。
ヒットとブロー
4つの数字を宣言すると、2つの数が返ってきます。数字も位置も合っているものがヒット、数字は答えの中にあるが 位置が違うものがブローです。1つの数字がヒットとブローの両方に数えられることはありません。そのため、 ヒットとブローの合計は、宣言した4つの数字のうち、答えの中に実際に入っている数字の数に必ず等しくなります。 この1点が、あとで大きく効いてきます。
ハズレと正解
ヒットもブローも0ならハズレで、宣言した4つの数字が答えの中に1つもないという意味です。4つともヒットなら 正解で、勝ちです。数字はすべて合っているのに位置がすべて違う、0ヒット4ブローも出ることがあり、これは 実質的にあと一歩の状態です。
このアプリの動き方
ここからは、このアプリ固有の動きの説明です。ヒット&ブローの実装は細かいところが少しずつ違うので、 一度読んでおくと戸惑いにくくなります。
1日1問、同じ答えを全員が受け取る
答えは、その日の日付から作られます。日付の文字列を1つの数に折りたたみ、その数で0から9を並べ替えて、 先頭の4つを切り出します。同じ日に訪れた人は誰でも同じ答えを受け取り、日付が変わると新しい問題が開きます。 基準はお使いの端末の日付なので、時差のある場所では切り替わる時刻もそれだけ違います。
答えを作ることも、判定することも、すべてブラウザの中で行われます。答えがサーバーから届くことはなく、 宣言した数字もサーバーには送られません。アカウントも要りません。
チャンスは10回
1問につき、予想は最大10回までです。正解するとその場で終わり、10回使い切っても当たらなければ、その回は 終了して答えが画面に表示されます。残りの回数は入力欄の上に表示され続けます。10回はかなり余裕のある数です。 5章で数えるとおり、論理だけで進めれば、最悪の場合でも8回以内に終わります。
入力のふるい分け
入力欄に4桁の数字を続けて入力します。数字以外の文字は受け付けず、5文字目は切り捨てられます。4つ入力した 数字に重複があると、4つの数字は違うものにするようにというメッセージが出て、予想のボタンは押せません。 Enter キーでも送信できます。宣言する順序に制限はなく、好きなときに好きな数字を試せます。
保存されないもの
ここは率直にお伝えします。これまでの予想は画面の上にだけあり、どこにも保存されません。再読み込みしたり、 タブを閉じてから開き直したりすると、履歴は消えて最初からになります。答えは日付から決まるので同じ日は同じですが、 すでに割り出したヒントは自分の頭の中にしか残りません。1問の途中は、タブを開いたままにしておくのが無難です。
ないものも書いておきます。答えを教えてくれるヒントのボタンはなく、予想を取り消す機能も、残りの候補を数えて くれる機能もありません。タイマーもありません。
共有される文面の中身
1問が終わると、結果をコピーするボタンが出ます。コピーされる文面には、日付、何回で終わったか、そして 各回のヒットとブローの数が記号で入ります。答えも、予想した数字も含まれません。まだ今日の問題を解いていない 友達に送っても、答えが漏れないように作ってあります。
基本のコツ
最初の予想はどれでも同じ
最初の予想で悩む人は多いのですが、結論から言うと、悩まなくてかまいません。5040通りの最初の予想をすべて 試して、それぞれが5040個の候補をどう分けるかを数えると、毎回まったく同じ結果になります。0123から始めても 5907から始めても、起こりうる各結果の後に残る候補の数は、1つ残らず同じです。まだ情報がないので、どの数字も ほかの数字と区別されていないからです。ラッキーナンバーや誕生日を最初に出しても、損はありません。
最初の結果でどこまで絞れるか
その計算から出た表がこれです。最初の予想で起こりうる結果のすべてと、それぞれの後に残る答えの候補の数です。 合計は5040になります。
| 最初の結果 | 残りの候補 |
|---|---|
| 0ヒット0ブロー(ハズレ) | 360 |
| 0ヒット1ブロー | 1,440 |
| 0ヒット2ブロー | 1,260 |
| 0ヒット3ブロー | 264 |
| 0ヒット4ブロー | 9 |
| 1ヒット0ブロー | 480 |
| 1ヒット1ブロー | 720 |
| 1ヒット2ブロー | 216 |
| 1ヒット3ブロー | 8 |
| 2ヒット0ブロー | 180 |
| 2ヒット1ブロー | 72 |
| 2ヒット2ブロー | 6 |
| 3ヒット0ブロー | 24 |
| 4ヒット(正解) | 1 |
いちばん多い結果は0ヒット1ブローで、5040回のうち1440回です。すべての結果で平均すると、1回予想した後に残る 候補は931.41個で、元の5040のおよそ5分の1です。まだ先は長く見えますが、2回目以降は絞り込みがずっと速くなります。
まず合計を見る
初心者と経験者を分ける最初の習慣です。ヒットとブローを別々に読まず、先に足してください。その合計が、宣言した 4つの数字のうち、答えに入っている数字の数そのものです。1ヒット2ブローなら、3つの数字が答えに入っていて、 1つは入っていません。どの数字が入っているかはまだ分かりませんが、個数は確定しています。位置の話は、その後です。
ハズレは無駄ではない
何も合わない結果はハズレに見えますが、実は最も強く絞り込める結果の1つです。0123を宣言してハズレなら、答えは 4から9までの6つの数字だけでできていて、候補は360個しかありません。これは6個から4個を選んで並べる数と同じです。 1回目の後の平均931.41個と比べると、ハズレは約3分の1まで絞れます。ハズレが出たら、その4つの数字を確実に消して、 以降は残りの6つの数字だけから選びます。
消えた数字を見える形にしておく
このアプリは候補を数えてくれず、予想の履歴も再読み込みで消えます。紙に0から9を書いて、消えた数字を斜線で 消していくほうが、ずっと楽です。メモアプリに1行書くだけでも十分です。全部を頭の中でやろうとすると、10回の うちの2、3回を、すでに分かっていることの再確認に使いがちです。
応用のコツ
以下の数字はすべて、5040通りを実際にすべて走らせて出したもので、見積もりではありません。1つの結果ずつ判定して、 残った数を足し上げた値です。
2回目は1つか2つ重ねる
最初の予想を0123に固定して、2回目の予想5040通りをすべて試し、それぞれの残り候補の平均を計算しました。最初の 予想と重なる数字の数でまとめると、結果がはっきり分かれます。
- 重なりが1つ: 平均170.3から183.1
- 重なりが2つ: 平均167.0から204.4で、最小値はここで出る
- 重なりなし: 重ならない予想ならどれを選んでも、平均はちょうど216.1
- 重なりが3つ: 平均199.1から293.1
- 4つとも重なる: 平均495.8以上。まったく同じ数字をもう一度宣言すると931.4のまま
よくある助言は、0123の次に4567を出して、8つの数字を一度に調べるというものです。悪くはありませんが、最適では ありません。重なりなしなら、どれを選んでも平均216.1個ですが、最初の予想から2つの数字を残して位置を動かした 1045のような数字だと、167.0まで下がります。理由は単純で、重ねた数字の位置を入れ替えて出し直すと、どの数字が 入っているかと、どこにあるかを、1回で同時に聞けるからです。
同じ4つの数字を並べ替えるのはもったいない
0123の次に、数字は同じで位置だけ並べ替えた1032を出すのは最悪の選択で、残り候補は平均495.8個。重ならない 予想の2倍以上でした。4つの数字はすでに宣言済みなので、どの数字が入っているかについて新しく分かることが ありません。この手は序盤ではなく終盤向きで、すべての数字を割り出し終えて、位置だけが残ったときに使います。
1回の結果で候補が10個を切るとき
先ほどの表のいくつかの行は、よく見る価値があります。0ヒット4ブローなら、残りはちょうど9個です。4つの数字が すべて合っていて、位置だけがすべて違うからです。0123なら、その9個は1032、1230、1302、2031、2301、2310、 3012、3201、3210です。2ヒット2ブローなら、残りは6個だけです。どの2つの位置が合っているかを決めて、残りの 2つを入れ替えるだけだからです。3ヒット0ブローは24個に絞られます。4つの位置のうちどれが違うかの選び方と、 そこに入る残り6個の数字との組み合わせのすべてです。
4つの数字が分かれば、3ヒットは出ない
答えに入っている4つの数字が確定すると、残るのは並びだけで、24通りです。そのどれを宣言しても、結果は4種類しか ありません。0ヒット(9通り)、1ヒット(8通り)、2ヒット(6通り)、そして正解(1通り)です。3ヒットはあり得ません。 3つの位置が合えば、4つ目の位置も自動的に合うからです。そのため、この段階で2ヒットが出れば候補は6個に 絞られ、次の予想で2つの位置を入れ替えれば、たいてい終わります。
実際の1回分の例
抽象的な話だけでは感覚がつかめないので、1回分を数え上げます。0123から始めて1ヒット1ブローなら、5040が720に 絞られます。次に2345を出してまた1ヒット1ブローなら、92になります。3回目に4567を出して0ヒット2ブローなら、 残りは28個です。3回の予想で5040が28になりました。ここから、よい予想を1、2回重ねれば、答えが決まります。
最悪の場合を最小にする予想を選ぶ
残った候補の中から次の予想を選ぶ基準が1つあります。その予想が候補を結果ごとにどう分けるかを見て、いちばん 大きな組が最も小さくなる予想を選ぶことです。平均ではなく、最悪の場合を最適化します。この方針を、5040通りの 答えのすべてについて最後まで走らせると、平均5.32回で終わり、最長は8回でした。5040個の答えのうち、3回で 終わるのは109個、いちばん多いのは5回で2071個、8回かかるのは3個だけです。10回が余裕のある数だというのは、 そのためです。この計算を頭の中でそのまま再現することはできませんが、毎回、残りの候補をおおよそ半分に分ける ことを狙うだけで、大部分は同じ効果が得られます。
つまずきやすいところ
ブローばかりが続く
ブローが多いのは、正しい数字を選べているのに位置が違うということで、悪い知らせではなく、よい兆しです。ここで 新しい数字を足すと、すでに集めた情報がかえって濁ります。入っていると確信できる数字は残して、位置だけを 並べ替えてください。予想でヒットが1つ増えてブローが1つ減ったら、いま動かした先の位置が合っています。
数字は分かるのに、位置が決まらない
候補は24個まで絞れています。全部をいっぺんにひっくり返さず、一度に2つの位置だけを入れ替えて、ヒットの数が どう動くかを見てください。その動きが答えです。2増えれば、新しく置いた2つの位置はどちらも合っています。 1増えれば、片方だけが合っています。変わらなければ、元の2つの位置も入れ替えた先も合っていないので、その 2つの数字は残りの2つの位置に入ります。1減れば、元の2つの位置のうち1つが実は合っていました。2減れば、 両方が合っていたのに、無駄に動かしたことになります。この5つの結果ですべての場合を尽くしているので、曖昧さは ありません。ただし、3つ以上の位置を一度に動かすと、どの動きが変化を起こしたのか分からなくなります。
0を忘れる
これが最も多い間違いです。先頭の0も有効な答えですが、多くの人が無意識に1から9までの数字だけを宣言します。 0を考えから外すと、5040個の候補のうち2016個を、最初から捨てることになります。最初の予想に0を入れておけば、 この問題は丸ごと避けられます。
すでに分かっていることを聞く
出す前に一度だけ確認してください。これから出す予想は、ここまでに分かったことすべてと矛盾していないでしょうか。 ハズレで除外した数字が混ざっていたり、確定した位置を崩したりしていると、どんな結果が返ってきても、ほとんど 何も分かりません。これまでに分かったことと照らして、実際に答えになりうる予想だけを選ぶようにすると、それだけで 2回か3回の節約になります。
履歴が消えた
再読み込みすると予想の履歴が消えて、その回は最初からになります。ただし、今日の答えは変わらないので、すでに 割り出したことはそのまま有効です。紙に書いてあれば、それを使って続けてください。何も書いていなければ、実質的に ゼロからのやり直しです。時間がかかりそうな回は、予想と結果をどこかに書いておくのがおすすめです。
今日の1問を逃した
ホームの「過去の問題」から、直近14日以内の問題をもう一度解けます。答えはその日の日付から作られるので、同じ日付なら いつ開いても同じ問題です。14日より前の問題は開けず、明日の0時にまだ誰も解いていない新しい問題が開きます。