マイクロマウスの迷路データを管理するリポジトリ。
過去の大会の迷路や練習用の迷路を随時追加していく。
迷路を表示・編集・変換するウェブアプリはこちら。
迷路ファイルはテキスト形式とする。
以下のパーツを用いて迷路情報を表現する。
パーツ | 表現形式 | 注記 |
---|---|---|
柱 | + |
隣接壁がないときも記載 |
既知壁(横) | --- |
ハイフン - 3つ |
既知壁(縦) | | |
縦棒 | 1つ |
未知壁(横) | . |
半角スペースでドット . をはさむ |
未知壁(縦) | . |
ドット . 1つ |
スタート区画 | S |
半角スペースで S をはさむ |
ゴール区画 | G |
半角スペースで G をはさむ |
その他の区画 | |
半角スペース3つ |
注意:
- 迷路は正方形にすること。
- 長方形の迷路を表現したい場合は左下に寄せて残りを壁で埋める。
- ファイルの終端にも改行をつけること。
+---+---+---+---+---+---+---+---+---+
| | | | | G G |
+ + + + + + + + + +
| | | | | G G |
+ + +---+ + +---+ +---+ +
| | | . | |
+ +---+ +---+ . +---+---+ +---+
| | | . . | |
+---+ + + +---+---+ +---+ +
| | | | | |
+ + +---+---+ + + + + +
| | | | | | |
+ + + + +---+ +---+ + +
| | | | | |
+ +---+ +---+ +---+ +---+ +
| | | | | |
+ + + + +---+ +---+ + +
| S | | |
+---+---+---+---+---+---+---+---+---+
迷路を編集したいときはテキストファイルを直接書き換えてもよいが、 クリックするだけで壁を編集できる Python アプリケーションを用意した。
python3
python3-matplotlib
以下のコマンドで迷路のウィンドウが表示される
# clone this repository
git clone https://github.com/kerikun11/micromouse-maze-data.git
# change the directory
cd micromouse-maze-data
# run the application
python3 tools/maze_editor.py data/32MM2019HX.maze
# exit app to save the maze at ./output directory
壁をクリックすると、有無を切り替えることができる。
画面を閉じると編集した迷路が output
ディレクトリに保存される。
ファイルサイズから迷路の1辺の区画数(迷路サイズ)を推定できる。
ファイルサイズを F
、
迷路サイズを M
としたとき、
改行コードを 1 Byte と仮定すると
両者の関係は次式で表せる。
F = (4*M + 1 + 1) * (2*M + 1)
2次方程式の解の公式を用いると、次式のように表せる。
M = (sqrt(2*F) - 2) / 4
もしも改行コードが 2 Bytes だとしても、 切り捨てを考慮すると上式で計算が可能である。