この記事の内容
大きさが16×16の格子状で未知の迷路(クラシックマウス用)内で、2台のロボットが鬼ごっこできるかシミュレータで確かめました。逃げる方の逃げ方を適当に決めたせいか、鬼が勝ちました。
きっかけ
以前、私たちが迷路を広げて各自のクラシックマウスを走らせていたことがありました。迷路内を複数のクラシックマウスが走り回っている様子を見て、誰かがクラシックマウスに鬼ごっこをさせられたら面白そうだと言いました。私は複数のクラシックマウス間で互いの現在地を教え合う機能さえ追加すれば鬼ごっこができると思いつきました。クラシックマウス同士が互いの位置を分かっていれば、逃げる側(子)はどこから逃げればよいか分かりますし、追う側(鬼)はどこを目指せばよいか分かるからです。また、鬼が子の隣に来たら鬼の勝ちだということにすれば、「つかまえた」判定もできるようになります。そこで、この思いつきで鬼ごっこができるかどうかを確かめます。まずはシミュレータ上で鬼ごっこを試します。
やり方
他の人が作ってくれた迷路探索シミュレータを使います。これを使えば簡単に鬼ごっこを試せます。私は画面の中の迷路にクラシックマウスを2台同時に登場させ鬼ごっこをさせる機能を追加するだけで済むので楽です。シミュレータのプログラム内では2台の位置を記録する変数をグローバル変数として宣言しているため、お互いの位置が分かるようになっています。
画面の中で子は赤い四角で、鬼は青い四角で表します。子だけが知っている(子が実際に通ったところの)壁は赤で、鬼だけが知っている(鬼が実際に通ったところの)壁は青で、両方が知っている(迷路外枠と両者が通ったところの)壁はピンク色で表します。
ルールは次のようにします。子は迷路の左下の角の区画から、鬼は右上の角の区画から出発します。両方とも同時に動き始めます。鬼が子の隣の区画に来たら鬼の勝ちです。鬼が子をつかまえるまで鬼ごっこは続きます。
両者の作戦は次にようにします。
鬼は子がいる区画に向かって動きます。
子は鬼から逃げます。逃げ方は私が適当に決めました。子は迷路の右上の角の区画、右下の角の区画、左下の角の区画、左上の角の区画のどれかに向かって動きます。その4つのうちどれを選ぶかは鬼の位置によります。鬼が迷路の右上のどこかにいたら子は右下の角の区画を目指します。鬼が迷路の右下のどこかにいたら子は左下の角の区画を目指します。鬼が迷路の左下のどこかにいたら子は迷路の左上の角の区画を目指します。鬼が迷路の左上のどこかにいたら子は右上の角の区画を目指します。
結果
子(赤い四角)の逃げ方が下手過ぎて鬼(青い四角)につかまってしまいました。
動画も載せときます。
2台走らせてみる pic.twitter.com/Ab9UmX3F9d
— sophia (@tlo_olb) June 13, 2020
まとめ
クラシックマウス用の迷路で鬼ごっこができます。
これはクラシックマウス?
同じ迷路内を同時に走るクラシックマウスをまとめてクラシックマウスと呼ぶことはできません。つまり、迷路を走るロボットは1台でなくてはクラシックマウスと呼べません。なぜならマイクロマウスクラシック競技規定の2文目に次のように書いてあるからです。
"A robot participating in this contest is termed Micromouse."
日本語訳「ここに出場するロボットをマイクロマウスと呼ぶ。」
注:クラシックマウスは昔マイクロマウスクラシック競技という名前だったので、競技規定ではクラシックマウスをマイクロマウスと呼んでいるのでしょうね。
この不定冠詞によって、クラシックマウスは1台であると分かります。