マイクロマウスの探索アルゴリズム作成の補助ツール群.
テスト用の迷路データを生成したり, ホームページにある過去の大会の迷路データを抽出したりできる. 嬉しい.
Goのコンパイル環境.
趣味. Goを書く練習がしたかった.
マイクロマウスのホームページにあるPDFから迷路データを抽出する. 迷路の大きさなども自動推定してくれるので嬉しい.
標準出力に迷路データをテキストフォーマットで出力する.
出力形式は @micromouseonline さんの https://github.com/micromouseonline/mazefiles に準拠する.
テストケースとして2016-2019の全日本ハーフは全部通ったはずだけど, 問題があったら教えてください.
予め, 該当ページをImageMagickなどでbmpに変換する.
go run maze_formatter.go hoge.bmp
生成例
o---o---o---o---o---o---o---o---o---o---o---o---o---o---o---o---o
| |
o o---o---o---o---o---o---o o---o---o---o---o---o---o---o o
| | | |
o o o---o o---o---o---o---o o o o---o o---o o o
| | | | | | | | | |
o o o---o---o o o---o o---o---o---o o---o o o o
| | | | | | | | | |
o o o---o---o o o o---o o---o o---o o o o o
| | | | | | | | | | | | |
o o o o o o o---o o o o---o o o o o o
| | | | | | | G G | | | | | | |
o o o o o o o o o o---o o o o o o o
| | | | | | G G | | | | | | | |
o o---o---o---o o o---o---o o o o o o o o o
| | | | | | | | | | |
o o---o---o---o o---o---o---o o o o o o o o o
| | | | | | | | | | |
o o o---o---o---o---o o o---o o o o o o o o
| | | | | | | |
o o o---o o o o---o o o---o---o---o---o---o---o---o
| | | | | | | | | | | | | | |
o o---o o o o o o---o o o o o o o o o
| | | | |
o o o---o o---o---o---o---o---o---o---o---o---o---o---o o
| | | | | |
o o---o---o---o---o---o---o o o---o---o o---o o o---o
| | | | |
o o o---o o o o o---o---o o---o---o o---o o o
| | | | | | | | | | | | |
o o o o o---o o---o---o o---o o o---o o o o
| S | | | | |
o---o---o---o---o---o---o---o---o---o---o---o---o---o---o---o---o
先程出力したテキストベースの迷路形式をC言語ライクな形で出力する.
各マスでの東西南北の状態を1バイトで持つので, 適宜変更するとよろし.
生成されたファイルはcppCode/
以下に保存される.
cd GenMaze
go run gen_maze.go po.maze
生成例(cppCode/po.cpp)
#include <MazeData.h>
uint8_t po_East[] = {
0x6, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0x2, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0x3,
0x4, 0x3, 0xe, 0x2, 0xa, 0xa, 0xa, 0x8, 0x2, 0x3, 0x6, 0xa, 0x2, 0xa, 0x2, 0x1,
0x5, 0x4, 0xb, 0xd, 0x6, 0x2, 0xa, 0x3, 0xd, 0xd, 0xc, 0x3, 0xc, 0x2, 0x1, 0x5,
0x5, 0x4, 0xb, 0xe, 0x1, 0x5, 0x6, 0x9, 0x6, 0xa, 0x3, 0xc, 0x2, 0x1, 0x5, 0x5,
0x5, 0x5, 0x6, 0x3, 0x5, 0x5, 0xc, 0x3, 0x5, 0x7, 0xc, 0x2, 0x1, 0x5, 0x5, 0x5,
0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x6, 0x1, 0x5, 0xc, 0x2, 0x1, 0x5, 0x5, 0x5, 0x5,
0x5, 0xc, 0x9, 0xd, 0x5, 0x5, 0xc, 0x9, 0x5, 0x6, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5,
0x5, 0xe, 0xa, 0xa, 0x1, 0xc, 0xa, 0xa, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
0x4, 0x2, 0xb, 0xe, 0x8, 0xa, 0x3, 0x7, 0xc, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5,
0x5, 0x5, 0xe, 0x2, 0x3, 0x6, 0x8, 0x1, 0x7, 0xc, 0x8, 0x8, 0x8, 0x8, 0x9, 0xd,
0x5, 0xc, 0x3, 0x5, 0x5, 0x5, 0x7, 0xc, 0x1, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7,
0x5, 0x6, 0x9, 0x4, 0x9, 0xc, 0x8, 0xa, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x1,
0x5, 0xc, 0xa, 0x8, 0xa, 0xa, 0xb, 0x7, 0x6, 0xa, 0xa, 0x2, 0xb, 0x6, 0x2, 0x9,
0x4, 0x2, 0xa, 0x2, 0x2, 0x2, 0x2, 0x8, 0x8, 0x2, 0xa, 0x9, 0x6, 0x9, 0x5, 0x7,
0x5, 0x5, 0x6, 0x1, 0xd, 0x5, 0xc, 0xb, 0x7, 0xc, 0x3, 0x6, 0x9, 0x7, 0x5, 0x5,
0xd, 0xc, 0x9, 0xc, 0xa, 0x8, 0xa, 0xa, 0x8, 0xb, 0xc, 0x8, 0xb, 0xc, 0x8, 0x9};
IndexVec po_start = IndexVec(0, 0);
std::set<IndexVec> po_goal = {IndexVec(6, 10), IndexVec(7, 10), IndexVec(6, 9), IndexVec(7, 9)};
- GenMazeで生成されるフォーマットをどうにかしたい.
- ヘッダーファイルも必要(はい.)