使用方法: 自分が先攻の場合: @左の「攻撃用」のリストから、好きな数字を選びます。 どの数字を選んでも確率は変わりませんのでなんでもイイです。選んだ数字を敵(相手)に言います。 A相手から「0H1B」等応答が来るので、左の「攻撃用」のプルダウンリストにxHxBを入力します。 B相手が数字を言って攻撃してきますので、相手が言った数字を右の「守備用」に入力し、表示されたxHxBを相手に言います。 自分が後攻の場合: 前述の、「自分が先攻の場合」の逆手順です。 解説: 攻撃時に使う数字は、左の解析器(攻撃用)から知ることが出来ます。 同様に守備時に回答するxHxBは右の解析器(守備用)から知ることが出来ます。 動作論理: ・攻撃 ゲーム開始前に於ける正解の可能性がある数字はいくつか? 千の位には10個の数字の内、1個の数字が使われます。 百の位には9個の数字の内、1個の数字が使われます。(千の位で一つ数字を使用している為) 十の位には8個。 一の位には7個となります 計算すると、10×9×8×7=5040通りの可能性がある事になります。 つまり、第一回目の攻撃時には、どの数字を選んでも問題ありません。 第一回目の攻撃時にある数字(例として1234)を言った結果、0H1Bが応答されたとします。 次に、5040個の数字の全てについて、1234と"照合"、つまりxHxBを算出します。 そんでもって、相手の応答は0H1Bですから、照合結果が0H1Bになったものだけが正解候補になります。 これを繰り返せば確実に攻撃が出来ます。 ・守備 守備は攻撃の裏返しで考える必要があります。 第一回目の攻撃時に於いて、相手から応答のある可能性が有る回答は以下です。 4H0B 3H0B 2H2B 2H1B 2H0B 1H3B 1H2B 1H1B 1H0B 0H4B 0H3B 0H2B 0H1B 0H0B もちろん、4H0Bと応答があれば、相手の正解候補は1つに絞り込まれたので試合終了(勝利)です。 では、4H0B以外の場合は相手の正解候補は、幾つに絞り込まれるのでしょうか? 以下に、それぞれの場合の絞り込まれる数を示します。 4H0B:1 3H0B:24 2H2B:6 2H1B:72 2H0B:180 1H3B:8 1H2B:216 1H1B:720 1H0B:480 0H4B:9 0H3B:264 0H2B:1260 0H1B:1440 0H0B:360 0H1Bの1440個が一番多い=絞り込まれていない。ですね。攻撃する側から見ると0H1Bは一番嬉しくない応答ですね。 逆にいうと、(初回の)守備時は0H1Bを回答すればよいのです。 と言うことで、守備時の動作論理ですが、ポイントは最初に自分の数字を決めない。と言うことです。 自分の数字は、試合開始当初は5040個です。 相手が1234と攻撃してきたとしましょう。そうしたら、5040個の数字それぞれについて"照合"、つまりxHxBを算出します。 そして、xHxB毎に集計します。(初回の守備時であれば、以下のように集計されます。数の多い順に並べています) 0H1B:1440 0H2B:1260 1H1B:720 1H0B:480 0H3B:264 1H2B:216 2H0B:180 0H0B:360 2H1B:72 3H0B:24 0H4B:9 1H3B:8 2H2B:6 4H0B:1 第一回目の守備時は0H1Bと回答します。 第二回目はどうするかと言うと、1440個の数字に対して同じような集計を繰り返して、集計数が一番多いxHxBを回答します。 攻撃用解析器と守備用解析器を互いに戦わせて見てください。理解の助けになると思います。