Skip to content

dangorogoro/maze-solver-support

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MazeSolverSupport

マイクロマウスの探索アルゴリズム作成の補助ツール群.

Overview

テスト用の迷路データを生成したり, ホームページにある過去の大会の迷路データを抽出したりできる. 嬉しい.

Require

Goのコンパイル環境.

なんでGoで書いたの

趣味. Goを書く練習がしたかった.

Directory

MazeFormatter

マイクロマウスのホームページにあるPDFから迷路データを抽出する. 迷路の大きさなども自動推定してくれるので嬉しい.

標準出力に迷路データをテキストフォーマットで出力する.

出力形式は @micromouseonline さんの https://github.com/micromouseonline/mazefiles に準拠する.

テストケースとして2016-2019の全日本ハーフは全部通ったはずだけど, 問題があったら教えてください.

How to use

予め, 該当ページを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

GenMaze

先程出力したテキストベースの迷路形式をC言語ライクな形で出力する. 各マスでの東西南北の状態を1バイトで持つので, 適宜変更するとよろし. 生成されたファイルはcppCode/以下に保存される.

How to use

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)};

TODO

  • GenMazeで生成されるフォーマットをどうにかしたい.
    • ヘッダーファイルも必要(はい.)

About

maze solver support for micromouse

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published