読者です 読者をやめる 読者になる 読者になる

いものやま。

雑多な知識の寄せ集め

馬跳びゲームを考えてみた。(その1)

ゲーム

CodeIQを見てたら、次のような問題があった。

問題自体はまぁいいとして、このゲームは割と有名だし、そして必勝法も簡単だ。

ゲームの内容を書いておくと、以下のとおり。

二人で交互に手番を行い、数字を1から順番に1個〜3個ずつ言っていく。
10を言った方が負け。

まず、自分が必ず9を言えるようになれば、相手が必ず10を言うことになるので、必ず勝てる。

そして、手番では1〜3の数字を言えるので、4(= 1 + 3)ずつ数字を区切っていくことで、必ず9を言えるようになる。

具体的には、

  • 自分がN-4を言う
    • 相手がN-3を言った場合、自分はN-2, N-1, Nを言う
    • 相手がN-3, N-2を言った場合、自分はN-1, Nを言う
    • 相手がN-3, N-2, N-1を言った場合、自分はNを言う

というふうに、自分がN-4を言えば、必ず自分がNを言うことが出来る。

したがって、

  • 9を必ず言えるようにするためには、5を言えればいい。
  • 5を必ず言えるようにするためには、1を言えればいい。
  • 先手が1と言うことで、先手必勝となる。

馬跳びゲーム

さて、本題の馬跳びゲーム。

このゲームは、動きのシステムを前から考えていたゲームなのだけど、CodeIQのこの問題を見てふと思い出したので、ちょっと紹介してみたいと思う。

人数

2人用。

使う道具

お手軽に遊ぶには、消しゴムと定規を使うといい。

  • 先手と後手で消しゴムを3つずつ用意する。
  • 10cm以上の定規を1つ用意する。

準備

定規を置いて、0cmの手前に先手、後手、先手、後手、先手、後手の順に消しゴムを置いていく。

図にすると、以下のような感じ。

A: 先手の消しゴム
B: 後手の消しゴム
                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
B   A   B   A   B   A

ゲーム中、消しゴムはメモリの間に置いていくことになる。

概要と目的

アクションで消しゴムを進めていって、自分が先に10cmのラインを越えることを目指す。

アクション

準備が出来たら、先手から順番に、交互にアクションを行っていく。

アクションで出来ることは、以下のいずれか。

A. ジャンプ
B. 前進

A. ジャンプ

自分の消しゴムを1つ選び、前方の繋がった消しゴムを飛び越えて、その繋がりの先頭へ移動する。
(馬跳びで、自分の前にいる人たちを跳び越えていって、一番先頭に出るイメージ)

例えば、最初の状態で前から2番目のAをジャンプさせると、次のようになる。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
B   A   B   _   B   A   A

なお、元々いたところはスキマになる。

ここからさらに、一番後ろのBをジャンプさせると、次のようになる。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   A   B   B   B   A   A

先程できたスキマまで行ったら、そこで止まることに注意。

B. 前進

自分の消しゴムを1つ選び、その直前がスキマになっていた場合、一歩前へ進む。
(馬跳びで、自分の前に人がいないので、1つ前へ詰めるイメージ)

例えば、最初の状態で前から2番目のAがジャンプした後、前から2番目のBを動かそうとすると、直前がスキマになっているので、一歩前に進むことになる。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
B   A   _   B   B   A   A

スキマが2つ以上連続で空いた場合の処理

アクションを行った結果、スキマが2つ以上連続で空く場合がある。

例えば、以下のような状況を考える。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
B   A   _   B   _   B   _   A   A

ここで前から2番目のBが前進すると、次のようにスキマが2つ以上連続で空くことになる。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
B   A   _   _   B   B   _   A   A

この場合、このスキマがなくなるように、後ろの消しゴムが前へ移動する。
(馬跳びで、置いてかれた集団が慌てて追いかけるイメージ)

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
B   _   _   A   B   B   _   A   A

そして、連鎖的に一番後ろのBも前へ移動することになる。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   _   B   A   B   B   _   A   A

終了条件と勝利判定

いずれかの消しゴムが10cmのメモリを越えたら、ゲームは終了。

10cmのメモリを越えたプレイヤーが勝ちになる。

ゲームの一例

初期状態。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
B   A   B   A   B   A

前から2番目のAがジャンプ。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
B   A   B   _   B   A   A

前から2番目のBが前進

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
B   A   _   B   B   A   A

一番前のAが前進

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
B   A   _   B   B   A   _   A

一番後ろのBがジャンプ。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   A   B   B   B   A   _   A

一番前のAが前進
(後続が前へ詰める)

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   _   _   A   B   B   B   A   A

一番後ろのBがジャンプ。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   _   _   A   _   B   B   A   A   B

一番前のAがジャンプ。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   _   _   A   _   B   B   A   _   B   A

前から2番目のBがジャンプ。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   _   _   A   _   B   _   A   B   B   A

前から2番目のAがジャンプ。
(後続が前へ詰める)

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   _   _   _   _   _   A   B   B   B   A   A

一番前のBがジャンプ。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   _   _   _   _   _   A   B   B   _   A   A   B

一番前のAがジャンプ。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   _   _   _   _   _   A   B   B   _   A   _   B   A

一番前のBがジャンプ。
(後続が前へ詰める)

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   _   _   _   _   _   _   _   _   A   B   B   A   A   B

一番前のAがジャンプ。

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   _   _   _   _   _   _   _   _   A   B   B   A   _   B   A

一番前のBがジャンプ。
(後続が前へ詰める)

                    +-------------------------------------------+
                    | (定規)                                     |
                    | 0   1   2   3   4   5   6   7   8   9  10 |
                    | |   |   |   |   |   |   |   |   |   |   | |
                    +-------------------------------------------+
_   _   _   _   _   _   _   _   _   _   _   A   B   B   A   A   B

Bが10cmのラインを越えたのでゲーム終了で、後手の勝ち!

なお、校庭に脚でラインを引いて、実際に馬跳びして遊ぶことも出来るので、子供の遊びに使うことも出来るかも。

必勝法は・・・?

さて、問題となるのは、簡単な必勝法が存在するのかどうか。

パターンが多そうかなと思っていたのだけど、考えてみたら、簡単な必勝法があった(^^;
それについては、また今度で。

今日はここまで!