> おもちゃ箱 > Hit & Blow(HTML版)

  この Hit & Blow で用いている 「よかとき(コンピュータ)の戦法」 について (記:2025年 1月16日)

 あなたが決めた異なる4つの数字を、よかとき(コンピュータ) が当てる場合の、よかときの戦法について述べる。

 (1) この段階ではまだ何の情報もない。あなたの決めた4つの数字の組は、N=10×9×8×7=5040 個のうちの
  ひとつである。そこで、よかときは TRY-1 ではこのうちからランダムに選択する。これらを (T0,T1,T2,T3)
  とする。

 (3} これに対して、あなたは HとB を与える。H=h B=b として以下説明する。

 (4) あなたの決めた数が (T0,T1,T2,T3) に対して H=h B=b であるということは、(T0,T1,T2,T3)に対し
  て H=h B=b であるものの内にあなたの決めた数があるということである。N=5040 個のうち、それだけ
  を残せばよい。

 (4) 以下同様にして、N=1 になるまで TRY を行なえばよい。

  基本的な考え方はこれだけである。性能のよいコンピュータを用いるならば、この戦略にしたがったコード
 で完全探索を行なえばよい。私の何年か前に購入したパソコンでは、少々時間が掛かり過ぎてゲームとしては
 退屈である。そこで、私のやり方は次のようにした。
 
 私のやり方
 (1) TRY-1:ランダムに異なる4つの数字を選ぶ

  TRY-1に対して、H=2 B=2 または H=1 B=3 または H=0 B=4 のときは 以降は4つの数字を適当に入れ替え
 たものを試す。これら以外の H B の場合には、

 (2) TRY-2:TRY-1 で用いた数字以外の4つの数字をランダムに選ぶ。

 (3) TRY-2 以降は、可能性として残されたものの数が減るので完全探索を行う。


  あなたが最初に決めた数字を、H B に矛盾しない範囲で変更する場合でも、このやり方を用いる。

 以上である。


【参考】------------------------------------------------------------------
  決められた異なる4つの数を、私のやり方で よかとき(コンピュータ) に当てさせることをシミュレーション
 した結果を示す。このシミュレーションでは、最初に決められた4つの数は途中で変更しないものとして
 いる。

  TRY-1 での H B の値は、次の 14 通りある。すなわち

   H=4 B=0  H=2 B=2  H=1 B=3  H=0 B=4
   H=3 B=0  H=2 B=1  H=1 B=2  H=0 B=3
   H=2 B=0  H=1 B=1  H=0 B=2
   H=1 B=0  H=0 B=1
   H=0 B=0

  これらの場合に、よかとき(コンピュータ)が当てるまでの TRY 回数を調べた。H=4 B=0 は除いて、シミュ
 レーションの回数はそれぞれの場合で 100000回 行なった。その結果を下の表に示す。何回目で当てたか
 を割合(%)で、また当てるまでの回数の平均値 Average を示している。


        H=2 B=2  H=1 B=3  H=0 B=4  H=3 B=0  H=2 B=1  H=1 B=2  H=0 B=3
 TRY-1
 TRY-2  16.654          11.089                 
 TRY-3  33.413  24.936  33.496  12.663   4.250       
 TRY-4  33.383  50.132  44.444  29.030  29.125  12.490   8.658
 TRY-5  16.550  24.932  10.971  33.273  55.530  49.702  36.342
 TRY-6                          25.034  11.095  36.686  48.992
 TRY-7                                           1.122   5.989
 TRY-8                                                   0.019
 TRY-9
 Average   3.498   4.000   3.553   4.707   4.735   5.264   5.524


        H=2 B=0  H=1 B=1  H=0 B=2  H=1 B=0  H=0 B=1  H=0 B=0
 TRY-1
 TRY-2                                          0.308
 TRY-3                   0.085           0.089   0.276
 TRY-4  18.316   6.660   4.191   9.281   3.819  14.360
 TRY-5  49.983  38.877  27.549  43.001  22.898  50.970
 TRY-6  31.503  47.101  53.021  44.6.5  51.864  32.863
 TRY-7   0.138   7.310  14.840   3.106  20.682   1.223
 TRY-8           0.052   0.314   0.007   0.648
 TRY-9
 Average   5.135   5.552   5.793   5.416   5.912   5.195


  TRY-1 で H=2 B=2 の場合、2〜5回で当てていて、平均は 3.498回 である。他の場合も同様であるが、TRY-1
 での HBの値によって当てるまでの TRY回数が異なる。
  ここで用いた戦法が最善である保証はなく、また試行回数 100000回 と言えどもシミュレーションであって
 数学的に厳密な証明ではないので、TRY回数がもっと少なくて当てることができるかも知れないし、あるいは
 当てるまでの TRY回数が多くなることがあるかも知れないことは、述べておかなくてはならない。


  もし、最初に決めた4つの数を、HBに矛盾しない範囲で変更してもよいとする場合には、相手に当てられ
 るのを遅くするには、TRY-1 で H=0 B=3、H=1 B=1、H=0 B=2、H=1 B=0、H=0 B=1 のいずれかにしたらよいこと
 が分かる。そうすると、8回以下では当てられないようにすることが可能である。


  この Hit & Blow -A では、よかとき(コンピュータ)が決めた4つの数をあなたが当てるものであるが、最初の TRY-1
 で、H=4 B=0 を除いた 13通りのうちからランダムにひとつ選択している。そして
  H=2 B=2 なら トライ制限回数=5
  H=1 B=3 なら トライ制限回数=5
  H=0 B=4 なら トライ制限回数=5
  H=3 B=0 なら トライ制限回数=6
  H=2 B=1 なら トライ制限回数=6
  H=1 B=2 なら トライ制限回数=7
  H=0 B=3 なら トライ制限回数=8
  H=2 B=0 なら トライ制限回数=7
  H=1 B=1 なら トライ制限回数=8
  H=0 B=2 なら トライ制限回数=8
  H=1 B=0 なら トライ制限回数=8
  H=0 B=1 なら トライ制限回数=8
  H=0 B=0 なら トライ制限回数=7

 に設定している。

  したがって、このシミュレーションで用いた戦法がもし最善であるなら、あなたは最善を尽くさないと成功
 できないのだが、このシミュレーションで用いた戦法が最善ではないので、トライ制限回数より少ない回数で
 当てることができる。健闘を祈る。


  --------------------------------------- 以上 ----------------------------------------