parent
817d4f652f
commit
6d4495cf8c
4 changed files with 273 additions and 0 deletions
@ -0,0 +1,141 @@ |
|||||||
|
############################################################################################################################################# |
||||||
|
#.......#...#.....#...........#.....#.......#.......#.............#.........#...........#...............#.......#.....#.......#............E# |
||||||
|
###.###.#.#.###.###.#####.###.#.#####.#.#####.###.###.#########.###.#.#####.#.###.###.#.#######.#####.#.#.#.###.###.#.#.#.#.#.#.#.#########.# |
||||||
|
#...............#...#.....#.....#.....#.......#...#...#...#.....#...#...#...#...#.....#...................#.#.#...#.#.................#...#.# |
||||||
|
#.#.#.#.#.#.#####.###.#####.#####.#############.#.#.#####.#.#.###.###.#.#######.#####.#######.#####.#.#.#.#.#.###.#####.#.###.#####.#.#.#.#.# |
||||||
|
#.#...#.#...#.....#.#...#.....#...#.....#.......#.#.....#.#.#.#.....#...#.......#...#...#.#...#...#.#.#...#.#...#.......#...........#.#.#...# |
||||||
|
#.#.#.#.#.#.#.#####.###.#####.#.#####.#.#.#############.#.#.#.#.#####.#.#.#######.###.#.#.#.###.###.#.#####.#.#######.#.#.###.###.#.###.###.# |
||||||
|
#.#...#.#.#.#.....#...#.................#.#...........#.#.#.#.................#...................#.......#.#.#.....#...#.........#.#.....#.# |
||||||
|
#.#.###.###.#####.###.###.#############.#.#.#########.#.#.#.###.#.#.#.#######.#.#.#.#.###.#######.#.#.#####.#.#.###.#.#####.#.#######.###.#.# |
||||||
|
#.#...........#...#.....#.#.......#.....#...#...#...#.....#.#...#.............#.#.#.#.#...#.....#...#.....#.#...............#...#.....#...#.# |
||||||
|
#.#.#####.#####.###.#.###.#.#####.#.#.###.###.#.#.#.#####.#.#.###.###.#.#.###.###.#.#.#.###.###.###.#.###.#.#.###.###.#.#####.#.#.#####.#.#.# |
||||||
|
#.......#.#...........#...#.#...#.#.#.#.......#...#...#...#.....#.......#...#...#.#.#.#.#...#.#...#.#.#...#.#...#.#.....#.....#...#.....#...# |
||||||
|
#.#.###.###.#.###.#.###.###.#.#.#.#.#.#.#####.#######.#####.#####.###.#####.###.#.#.#.#.###.#.###.###.###.#.#.#.#.#.#.###.#########.######### |
||||||
|
#...#.#.#...#...#...#...#...#.#.#...#.#.#.....#...#...#...#.#...#.....#...#...#...#.................#...#...............#...#...............# |
||||||
|
###.#.#.#.###.###.###.###.###.#######.#.#######.#.#.#.#.#.###.#.#####.###.#.#####.#.#.#######.#.###.###.#####.#####.#.#.###.###.###########.# |
||||||
|
#.#.#.#.....#.#...#...#...#...........#.....#...#.#...........#...#.....#.#.......#.#.#...#...#...#.#...#...#.....#...#...#...#.#...#...#...# |
||||||
|
#.#.#.###.###.#.###.###.#######.###.#.#####.#.###.###############.#####.#.#########.#.#.#.#.#####.#.#.#####.#.###.#.#.###.###.###.#.###.#.### |
||||||
|
#.........#...#.........#.....#.#...#.....#.#.#.#.........#.....#...#.....#.....#...#...#.#.#...#...#...#...#.#...#.#.#.#...#.#...#.#...#.#.# |
||||||
|
#.#######.#.#####.#######.###.#.#.#######.#.#.#.#########.#.###.###.#.#####.###.#.#######.#.###.#######.#.#.#.#.#####.#.###.#.#.###.#.###.#.# |
||||||
|
#...#.......#...#.#.......#...#.#.....#...#...#.....#...#.#.#...#...#.#.....#.#.#.....#...#.#.....#.....#.#.#.......#.#.......#.#.#.#.....#.# |
||||||
|
#.###.###.#.#.#.#.#.#######.###.#####.#########.#.#.#.###.#.#.#.#.#####.#####.#.#####.#.###.#.###.#.#####.#.#.#####.#.#######.#.#.#.#####.#.# |
||||||
|
#.#...#.#...#.#.#...#.....#.#.......#.......#.....#...#...#.#.#.#.......#.#.....#.....#...#...#.#...#.....#...#.#...#.#...#.............#...# |
||||||
|
#.#.###.#.###.#.#####.###.#.#######.#######.#.###.#####.#####.###########.#.#####.#####.#.#####.#####.#######.#.#.###.#.#.#####.#.#.#.#.##### |
||||||
|
#.#...#...#.#.#.......#...#.......#.#.....#.....#.....#.....#.........#.....#.....#...#.#.......#.....#.#.....#.#.#...#.#.........#...#.....# |
||||||
|
#.###.#.#.#.#.#####.#############.#.#.###.#####.#####.#####.#.###.#.#.#.###.#.#####.###.#######.#.#.###.#.#.###.#.#.#.#.###################.# |
||||||
|
#.......#...#.#.....#...........#.#.#...#.#...........#.....#...#.#...#.#.....#.....#...#.....#...#.#.....#.....#.#.#...#...#...#...#.....#.# |
||||||
|
#######.#.#.#.#.#.###.#########.#.#.#####.#.#.#######.#.#######.#.#####.#.#####.#.#.#.###.#.#.#####.#.#########.#.#.#.#.#.#.#.###.#.#.###.#.# |
||||||
|
#.......#...#.#.......#.......#...#.......#.....#...#.#.#...#...#.....#.#...#.......#...#.#.#.#...#.#...........#.#.#...#.#.#.#...#...#...#.# |
||||||
|
#.#.###.#.#.#.###########.###.#####.#######.###.#.#.###.#.#.#.#######.#.###.#.#####.###.###.#.###.#.#.#########.#.#.#####.#.#.#.#.#.###.###.# |
||||||
|
#.#.#.....#.#.#.#.........#...#.....#.....#...#...#.#...#.#...#.............#.....#...#...#.#...#.#.#.#.......#.#.#.......#.#.#...#...#.#...# |
||||||
|
#.###.#.#.###.#.#.#.#######.###.#.###.###.#####.#.#.#.###.###.###.#.#####.#.###.#.#.#####.#.###.#.#.#.#.#####.###.#########.#.###.###.#.#.#.# |
||||||
|
#...#.#.#.....#.#.#.....#.#.#...#.#.....#.......#.#.#.#...#...#...#...........#.#.#.#...#...#...#.#.#.#.....#...#.#.............#...#.#...#.# |
||||||
|
#.#.#.#.#######.#.#####.#.#.#.###.#.###.#######.###.#.###.#.###.#####.#######.###.###.#.#####.###.#.###.#######.#.#.###########.###.#.#.##### |
||||||
|
#.#...#.............#.#.#.#.#.....#...#...#.........#...#.#.#.........#.......#...#...#.....#.#...#...#.#...#...#.#.....#...#...............# |
||||||
|
#.#################.#.#.#.#.#####.###.###.#.###########.#.#.#.###.#####.#.#####.###.#####.###.###.###.#.#.#.#.###.#.###.#.#.#.#####.#.#.#.#.# |
||||||
|
#...........#.....#...#.#...#...#...#...#.......#.......#.#.#...#.#.....#.........#.#...#...#.....#.#.#.#.#.#...#.#...#.#.#.#...........#.#.# |
||||||
|
###########.#.###.###.#.#.#####.###.###.###.#####.#######.#.#.#.#.#.#######.#.###.#.#.#.###.#####.#.#.#.#.#.###.#.#.#.###.#.###.#.#######.#.# |
||||||
|
#...#.......#...#...#.#.#.#.......#.#.#...#.#.....#.....#.#.#.....#.#.....#.#.#...#.....#.#.........#.#.#.#.....#...#.#...#...#.#.........#.# |
||||||
|
#.#.#.#####.#.#.###.###.#.#.###.###.#.###.#.#.#####.#.#.#.#.###.#.#.#.###.#.###.###.###.#.###########.#.#.###.#.#####.#.#####.#############.# |
||||||
|
#.#...#...#.#.#.#.#.....#.#...#.#...#...#.#.#.#.....#.#...#.#...#...#...#.#...#.#.....#.#...#.....#...#.#.#...#.....#.#...#...#...#.......#.# |
||||||
|
#######.#.#.#.#.#.#######.#.#.###.###.#.#.###.###.###.#.###.#.#####.###.#####.#.#.#.###.###.#.###.#.###.#.#.#.#######.#.#.#.###.#.#.#####.#.# |
||||||
|
#.....#.#...#.#...#...#...#.#...#.....#.#...#.......#.#.#...#.#...#...#.#.....#...#...#...#.#.#...#.#...#...#...#.....#.#.#.....#...........# |
||||||
|
#.###.#.#.#.###.#.#.#.#.#######.#######.#.#.#.#.#####.#.#.#.#.#.#.###.#.#.#####.#####.###.#.#.#.###.#.#######.#.#.#######.#######.###.#.##### |
||||||
|
#...#...#.#.....#.#...#.......#.....#...#...#...#.....#.#.#...#.#.#.....#.#...#.#...#...#.#.#.#...#.#...#.....#.#.#.......#...#...#...#.#...# |
||||||
|
#.#.#####.#######.#.#.#####.#.#.#.###.###.###.###.#.#####.#.###.#.#######.#.###.#.#.#.###.#.#.#.#.#.#.#.#.###.#.#.#.#.#####.#.#.###.#####.#.# |
||||||
|
#.#...#.#.....#...#.#.#.......#.#.......#.#...#...#.#.....#...#.#.#.......#.#...#.#.#.......#...#...#...#.#...#.#.#...#.#...#.#...#.#.....#.# |
||||||
|
#.###.#.#####.#.###.#.#.#######.#######.#.#.###.#.###.#######.#.#.#.#######.#.###.#.###########.###.#.###.#.###.#.###.#.#.#.#####.#.#.#####.# |
||||||
|
#.#.#.#.....#.#.....#...#.........#...#.#.....#.#.#...#.....#.#.#.#...#...#...#...#.......#.....#...#.....#.#.........#...#.......#...#...#.# |
||||||
|
#.#.#.#.#####.#.#######.#.#.#####.#.#.###.###.#.#.#.#######.#.#.#.#.#.#.#.#.###.#######.#.#.###########.###.#.#########.###########.###.#.#.# |
||||||
|
#...#.#...#...#...#...#.#.#...#...#.#.....#...#.#...#.....#...#.#...#.#.#.#.#.....#...#.#.#...........#.#...#.....#...#...#.#...........#.#.# |
||||||
|
###.#.###.#.#######.#.#.###.#.###.#.#####.#.###.#######.#.#####.###.#.#.###.#.###.#.#.#.###########.###.#.#####.#.###.###.#.#.###########.#.# |
||||||
|
#.#.#.#...#.#.....#.#.#.....#.....#.#.#...#.#...........#...#...#.#...#...#.#...#...#.#.#...#.....#...#.#.....#.#.......#.#.....#...#.....#.# |
||||||
|
#.#.#.#.#.#.#.###.#.#.#.#########.#.#.#.###.###############.#.#.#.#######.#.#.#.###.#.#.#.#.#.#.#####.#.#.###.#.#######.#.#.###.#.#.#####.#.# |
||||||
|
#.....#...#...#.#.#.#.#.#...#...#...#.#...#...#...........#.#.#...........#.#.#.....#.#...#...#.....#...#.#.#.#.......#.#.......#.#.....#.#.# |
||||||
|
#####.#.#.#####.#.#.#.###.#.###.#####.#.#####.#.#.#########.#.#.###.###.#.#.###.#####.#########.#.#.#####.#.#.#######.###.#.#####.#####.#.#.# |
||||||
|
#.....#.#.....#.....#.....#...#.#.......#...#.#.#.............#...#.......#.....#.....#...#...#...#.....#.#.#...#...#...#.#.#...#...........# |
||||||
|
#.#####.#.#####.#############.#.#.#.###.#.#.#.#.#######.###########.#.#######.#.#.#####.###.#.#######.#.#.#.#.#.#.#####.#.#.###.#.#.#######.# |
||||||
|
#.....#.#.........#...........#...#...#.#.#...#.#.#.........#.....#.#.#.......#.....#...#...#.........#.#...#.#.#.#.......#.....#.#.#.......# |
||||||
|
#.###.#.#.#.#####.#.#######.#.#.###.#.###.#####.#.#.#######.###.#.###.#.###########.###.#.#############.#.###.#.#.#.###.#.#######.#.#####.### |
||||||
|
#.#...#...#.#...#.#.#.....#.#.#.#...#.....#...#.#.#.#.......#...#...#.#...#.......#.....#.........#.....#.#...#...#...#.#.......#.#.........# |
||||||
|
#.#.###.#.###.#.#.#.#####.#.#.###.#########.#.#.#.#.#.#######.#####.#.###.#.#.#.#.###.###########.###.###.#.###.#####.#.#.#.###.#.#.#.#.###.# |
||||||
|
#.#.#...#.....#.#.#...#...#.#...#.#.........#.#.#.#.#.#...#...#.........#.#.#...#.#...#.........#...#.#...#.#.#.#...#.#.#...#.#...#...#.....# |
||||||
|
###.#.#.#.#####.#####.#.#.#.###.#.#.#######.###.#.#.#.#.#.#.###########.#.#####.#.#.###.#######.###.###.#.#.#.#.#.#.#.#.#####.#############.# |
||||||
|
#...#.........#.......#.#.#.#.#...#.....#...#...#.#.#...#.#...#...#...#.#.#.....#.#.....#.....#...#.....#...#...#.#...#.....#...#...#.......# |
||||||
|
#.#####.#.###.#########.#.#.#.#########.#.###.###.#.#####.#.#.#.#.#.#.###.#.#####.###.#######.###.#.#####.###.###.#########.#.#.#.###.####### |
||||||
|
#.#...#...#...#.........#.#.#.........#.#...#...#.#.....#.#.#...#...#.#...#.....#.....#.....#...#.#...#...#.....#...#.#.......#...#...#.....# |
||||||
|
#.#.#.#.#.#.#######.#####.#.#.#.#.###.#.###.###.#.#.#.#.#.###########.#.###.###.#######.###.#.###.#.###.###.#.#####.#.#.###########.#######.# |
||||||
|
#.#.#...#.#.#.......#.....#...#.#...#.#.#.#.....#.#...#.#...........#.#.#.....#.....#...#.#...#...#.#...#.#...#.....#.......#.......#.......# |
||||||
|
#.#.###.#.#.#.#######.#######.#.###.###.#.#######.#####.###########.#.#.###########.#.#.#.###.#.#####.###.###.#.#.#########.#.#######.#.##### |
||||||
|
#.#...#...#...#.....#.#...#.#.#...#.....#...........#.#.#.........#.#...............#.#.#...#.#.....#.#.......#.#.#.......#.#.....#.#.#.....# |
||||||
|
#.###.#.#######.#####.#.#.#.#.###.#######.###.###.#.#.#.#.###.#.###.###########.#.#####.#.#.#.#####.#.###.#####.###.#.###.#####.#.#.#.#####.# |
||||||
|
#...#.#.............#...#...#...#.....#...#.#.....#...#.#...#.#.#...#...#.....#...#.....#.#.....#...#.........#...#.#...#.....#...#.......#.# |
||||||
|
#.#.#.#.###########.#######.###.#####.#.###.#####.#####.###.#.#.#.###.#####.#.#######.###.#####.#.###########.###.#.#.#.###.#.#.#.#########.# |
||||||
|
#.#.#.............#.....#.....#...#.#...#.......#.......#...#.#.#.#...#...#.#.........#...#...#.#...#.......#...#.....#.#...#.#...........#.# |
||||||
|
#.#####.###.#.#.#.###.#.#.#######.#.#####.#.#.#.#.#.#####.###.###.#.#.#.#.#.###.###########.#.#####.#.#####.###.#########.#####.#.#######.#.# |
||||||
|
#.#.......#.#...#...#.#.#...#.....#...#.....#.#...#.#...#.#...#...#.....#.#...#.....#...#...#.#.....#.#...#.#.....#...#...#.............#.#.# |
||||||
|
#.#.###.###.#######.#.#.#.#.#.#####.#.#.###.#.#####.#.###.#.#.#.#.#######.#.#######.#.#.#.#.#.#.#####.#.#.#.#.#.###.#.#.#.#.###.#.#.#####.#.# |
||||||
|
#.#.#.#.....#.........#...#.#...#...#.......#.#.#...#.......#.#.#.......#.#.#.....#...#...#.......#...#.#.#...#.#...#...#.#...#...#...#...#.# |
||||||
|
#.#.#.#.#####.#.#####.###.#.###.#.#######.###.#.#.#######.###.#.#####.###.#.#.###.#.#######.#.###.#.###.#.###.###.#####.#####.#.#.###.#.###.# |
||||||
|
#.#.#.........#.#.....#...#.#.#.#.........#...#.#.#.....#.#...#.#...#.#...#.#...#.#...#.....#.#...#.#...#.....#...#...........#.....#...#...# |
||||||
|
#.#.#.#####.###.#.#######.#.#.#.#######.###.###.#.###.#.###.#.#.#.#.###.#######.#.###.#.#######.###.#.#########.#######.#.#####.#.#.#######.# |
||||||
|
#.#.#...#...#...#.......#.#...#.....#...#.......#...#.#.....#.#.#.#...#.#.......#.#.#.#.........#...#...#.....#.#.....#.#...#.....#.#.....#.# |
||||||
|
#.#.###.#.###.#########.#####.#####.#.###.#########.#.#######.#.#.###.#.#.#######.#.#.###########.#.###.#.###.#.#.###.#.###.###.#.#.#.#.#.#.# |
||||||
|
#.........#...#.....#.#.....#.....#.#.......#.......#...#.#...#.......#...#.....#.#.#.#...#.......#.....#...#.#.....#.#.#.#...#.#.....#.#...# |
||||||
|
#.###.#.#.#.#.###.#.#.#####.#.#####.#.#######.#.#.#####.#.#.#########.#####.###.#.#.#.#.#.#####.###.#######.#.###.###.#.#.###.#.#.###.#.##### |
||||||
|
#...#.#.#.#.#.....#.#.#...#.#.#.....#.#...#...#...#.....#.......#.....#.....#...#.#.....#.......#.#...#...#.#...#.#...#.....#.#.#...#.#.....# |
||||||
|
#.###.#.#.#.#.#####.#.#.#.#.#.#.#####.#.###.#######.#.###.#######.###.#.#####.###.###############.###.#.###.###.#.#.#####.###.#.#.#.#.#.###.# |
||||||
|
#.....#.#.#...#...#...#.#.#...#...#.....#...#.....#.#...#.#.......#.#...#...#.#...#.....#.....#.......#.#...#...#.#.#.....#...#...#.#.#...#.# |
||||||
|
#.#######.###.###.#.#.#.#.#.#####.###.###.###.###.#####.###.#######.###.###.#.#.###.###.#####.#.#######.#.#####.###.#.#####.#####.#.#.#####.# |
||||||
|
#...#.....#.....#.#.#...#.#.....#...#.#...#...#.........#...#...#...........#.#.....#...#.....#.#.......#.....#.....#...#.#.....#.#.#...#...# |
||||||
|
###.#.#####.#.#.#.#.#.###.#########.###.###.#.#####.#.###.###.###.#####.#####.#######.###.#####.###.#########.#########.#.#.###.#.#.#.#.#.#.# |
||||||
|
#.......#...#...#...#.#.............#...#...#...#.#.#...#...#.......#.#.........#.....#.....#.......#...#...#...#.....#.#...#.#.#.#.#.....#.# |
||||||
|
#.#.#.#.#.###.#######.###########.###.###.#####.#.#.###.###.#######.#.###########.#####.###.#.#######.#.#.#.###.#####.#.#.#.#.#.#.#.#.###.### |
||||||
|
#.#...#.#...#.#.....#.....#...#...#...#...#...#.#.........#.....#.#.....#...#...#.#...#.#.#.#.#.#.....#...#...#.#.....#...#.#.#.#...#...#...# |
||||||
|
#.#.###.###.#.#.###.#####.#.###.###.###.###.###.#########.#####.#.#####.###.#.#.#.#.###.#.#.#.#.#.###########.#.#.#####.###.#.#.#.###.#.#.#.# |
||||||
|
#.#.......#.#...#.#.....#.#.#.....#...#.#.....#.#...#...#.#.....#.#.......#.#.#...#.#.....#.#.#.....#...#.......#.........#...#.#.#.........# |
||||||
|
#.#.#.#####.#####.#####.#.#.#.#######.#.#.###.#.#.#.#.#.#.#.#####.#.#.#.#.#.#.#####.#.#####.#.#.###.#.###.#########.#.#####.###.#.###.###.#.# |
||||||
|
#...#.#.....#...#.....#.#.#.#.#.#.....#.#.#...#...#.#.#.#.#...#.....#.....#.#.....#.#.#...#...#...#.#.........#...#.#.......#...#...#.#...#.# |
||||||
|
#.#.###.#####.###.###.#.#.#.#.#.#.#####.###.#.#####.#.#.#.###.#####.#######.#####.#.#.#.#.#.#####.#.#######.#.#.#.#.#########.###.#.#.#####.# |
||||||
|
#.#...#...#...#...#.#.#.#.#.#...#.#.....#...#.#.#...#.#.....#.....#...#.....#.#...#...#.#.#.......#.#.....#.#.#.#.#...#.......#...#.#.....#.# |
||||||
|
###.#.###.#.#.#.###.#.#.#.#.###.#.#####.#.###.#.#.###.#########.#.###.#.#.#.#.#.#######.#.#########.#.###.#.#.#.#.#####.###########.#.###.#.# |
||||||
|
#...#.....#.#...#...#.#...#.....#.....#...#.....#.#.....#.....#.#...#.#.#.....#.#.......#.......#.....#.#...#...#...#...#.........#.#...#...# |
||||||
|
#.#.#######.#####.#.#.###.###########.###.#######.#.#####.###.#####.#.###.###.#.#.###.#########.#.#.#.#.#####.#####.#.###.#.#.###.#.#.#####.# |
||||||
|
#...#.....#...#...#.#.....#.........#.#...#.......#...#...#.#.....#.#.....#.#.#.#.........#.......#...#.#...#.....#.#...#.#.#...#...#.......# |
||||||
|
###.#.#.#.###.###.#########.###.#####.#.###.#######.###.###.#####.#.#######.#.#.#.#######.#.#.#.#####.#.#.#.#####.#.###.#.#.###.###.###.#.### |
||||||
|
#...#.#.#...#.....#...#.....#.#.....#.#.#.#...#...#.#...#.....#...#.#...#.....#.#.......#...#.#.......#.#.#...#...#...#.#.#.#.#...#.#...#...# |
||||||
|
#.#.###.#########.#.#.#.#####.#.###.#.#.#.###.###.#.#.#######.#.###.#.###.#####.###########.#.#.#.#####.#.###.#######.#.#.#.#.###.###.#.###.# |
||||||
|
#...#...#.......#.#.#...#.........#.#.#.....#...#...#...#.....#.#...#.#...#...#.#...#.....#.#.#.#.....#.#...#.#.......#.#.#...#.#.....#.#...# |
||||||
|
#.#.#.###.#.#####.#.#####.###.###.#.#.#####.###.#.#####.#.###.#.###.#.#.#####.#.#.#.#.###.###.#######.#.###.#.#.#.#####.#.###.#.#######.#.### |
||||||
|
#.#.#.#...#.....#.#.#.....#...#...#...#...#...#.#.#...#.#.#...#...#.#...#.....#.#.#...#.#...#.........#.#...#...#.#...#.#...#...............# |
||||||
|
###.#.#.#######.#.#.#####.#.#.#.#######.#.#.###.###.#.#.#.#.#####.#.###.#.#.###.#.#####.###.###.#######.#.#####.###.#.#.#.#.#.#####.#.#.###.# |
||||||
|
#...#...#.....#...#.....#...#.#.#.......#.....#.#...#...#.#.....#.....#.#.#...#.#...#.....#...#.......#.#.....#.#...#...#.#.........#...#...# |
||||||
|
#.###.#####.###########.#.###.#.###.#########.#.#.#######.#######.###.#.###.#.#.###.#.#######.#######.#.#####.###.###.#.#######.#.#####.#.### |
||||||
|
#...#.#...#...#.....#...#.#.#.#.....#.......#.#.#...#.......#...#.#...#...#.#.#.#...#.......#.....#...#.....#.#...#...#.......#.#...#...#...# |
||||||
|
#.#.#.#.#.###.#.###.#.###.#.#.#########.###.#.#.###.#######.#.#.#.#.#####.###.#.#.###.#####.#####.###.#####.#.#.###.#########.#.###.#.#.###.# |
||||||
|
#.#.#...#.....#...#...#.#...#.#.#.......#.#.#.#.#.........#...#...#.....#.....#.#.#.#.#...#.....#...#.....#.#.#...#.........#.#.#.#.#.#...#.# |
||||||
|
#.#.#####.#######.#####.#.###.#.#.#.#####.#.#.#.#.#.#.###.#.#######.###.#####.#.#.#.#.###.#.#######.#####.#.#.###.#######.#.#.#.#.#.#.#.#.#.# |
||||||
|
#.#...#...#.......#.....#.#...#.#.#.........#.#.#.#.....#.#...#.............#.#.#.#.#.#...#.....#...#...#.#.#...#.#.....#.#.#...#...#...#.#.# |
||||||
|
#.###.#.###.#######.#.###.#.###.#.###.#######.#.#.#.###.#.###.#.###########.###.#.#.#.#.#.#####.#.###.#.#.#.###.#.#.###.###.#####.#####.#.#.# |
||||||
|
#.#...#...#.#.......#.#...#.#...#.#.#...#...#...#.#...#.#.#...#.#.....#.....#...#.#.#.#.#.#.......#...#.#...#.#...#.#.....#.....#.....#.#.#.# |
||||||
|
###.#.#####.#####.###.#.###.#.#.#.#.###.#.#.###.#.###.#.#.###.###.###.#.#####.###.#.#.#.#.###.#####.#####.#.#.#####.#####.#####.#####.#.#.#.# |
||||||
|
#...#.#.....#...#.....#.#.#.#.#.#.#...#...#.....#.#.#.#.#...#...#...#...#...#.#...#.#.......#...........#...#.....#...#.............#.#...#.# |
||||||
|
#.#.###.#####.#.#.###.#.#.#.#.###.###.###########.#.#.#.###.###.###.#####.#.#.#.#.#.#######.###########.#.###.###.###.#.###########.#.#.###.# |
||||||
|
#.#.#...#.....#.#.#.#.....#.#.#.......#...#.......#...#...#.....#...#.....#.#.#.#.#.....#.#.....#.............#.#.#...#.......#.....#...#.#.# |
||||||
|
#.#.#.#####.###.#.#.#######.#.#.#######.#.#.###.#########.###.#.#.###.#####.#.###.#.###.#.#####.#.#####.#######.#.#.#######.#.#########.#.#.# |
||||||
|
#.#.#.#.....#.#.#.....#.....#.....#...#.#...#...#.........#...#...#...#...#.#.....#.#.#.......#.#...#...#.#.......#.........#.............#.# |
||||||
|
#.#.#.#.#####.#.###.###.###.#######.#.#.#.###.###.###.###.#.#####.#.###.###.###.###.#.#.#######.#.#.###.#.#.#########.###.#############.#.#.# |
||||||
|
#.#.#.#.......#...#.................#.#.......................#...#.#.....#.........#...#.......#.#...#.#.#.............#...#.........#.#...# |
||||||
|
#.#.#.#.#.###.###.#.#.#.#####.#######.#.#.#.#######.#.#######.#.###.#####.#####.#####.###.###########.#.#.#.#########.#.#.###.#####.#.#.##### |
||||||
|
#...............#.....#.#...........#.#...#.....#.#.........#.#...#.#.....#.#...#...#.........................#.....#.#.#...#.#.#...#...#...# |
||||||
|
#.#.#.#.###.#.###.#.#.###.#########.#.#####.###.#.#.#.#####.#.###.#.#.###.#.#.#.#.#.#.#####.#.###.#.#.#####.#.###.#.#.#.###.#.#.#.#####.###.# |
||||||
|
#.#.#.#.#.#.#.#...#.#...#.#...#.................#...#.................#.#.#.#.#...#...#.....#.#...#...#...#.......#...#...#...#.#.#...#.#...# |
||||||
|
#.###.#.#.#.#.#.###.###.#.###.#.#.#####.#.#.#.#.#####.#.#.###.#.#.#.#.#.#.#.#.#.#######.#######.#####.#.#.#.#########.###.#.###.#.#.#.#.#.#.# |
||||||
|
#...#.#...#.#.#...#.#...#.#...#.#.......#...#.#.......#.#.........#...#.#...#...........#.......#...#.#.#.......#.#...#.#.#.#...#.#.#...#.#.# |
||||||
|
#.#.#.#####.#.###.###.#.#.#.###.#######.#.#.#.#####.#.#.#.#############.###.###########.#.###.###.###.#.###.###.#.#.#.#.#.#.#.#.#.#.#####.### |
||||||
|
#.#.#.....#.#...#...#.....#...#.#...#...#.................#...#.....#.........................#.......#.#...#...#.......#.....#.#.#...#.....# |
||||||
|
#.#.#####.#.###.###.###.#.###.#.###.#.#####.###.#.#.#.#.###.#.#.###.#.#######.###.###.###.#.#.#######.#.#.#.#.#######.###.#######.###.#.###.# |
||||||
|
#.#.....#.#...#...#.....#.....#...#.#.......#...#.#.#.#.#...#.#.#.#.#...#...#.....#.#.....#.#.......#.#.#...#...#...#.#...#.......#...#...#.# |
||||||
|
#.###.###.###.#.#######.#.#######.#.#########.#.###.#.###.###.#.#.#.###.#.#.#.#####.#######.#######.###.###.###.#.#.#.#.#.#.#######.#######.# |
||||||
|
#S..#.........#...................#...........#.....#.......#.....#.....#.#.......................#...........#...#.........#...............# |
||||||
|
############################################################################################################################################# |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
############### |
||||||
|
#.......#....E# |
||||||
|
#.#.###.#.###.# |
||||||
|
#.....#.#...#.# |
||||||
|
#.###.#####.#.# |
||||||
|
#.#.#.......#.# |
||||||
|
#.#.#####.###.# |
||||||
|
#...........#.# |
||||||
|
###.#.#####.#.# |
||||||
|
#...#.....#.#.# |
||||||
|
#.#.#.###.#.#.# |
||||||
|
#.....#...#.#.# |
||||||
|
#.###.#.#.#.#.# |
||||||
|
#S..#.....#...# |
||||||
|
############### |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
################# |
||||||
|
#...#...#...#..E# |
||||||
|
#.#.#.#.#.#.#.#.# |
||||||
|
#.#.#.#...#...#.# |
||||||
|
#.#.#.#.###.#.#.# |
||||||
|
#...#.#.#.....#.# |
||||||
|
#.#.#.#.#.#####.# |
||||||
|
#.#...#.#.#.....# |
||||||
|
#.#.#####.#.###.# |
||||||
|
#.#.#.......#...# |
||||||
|
#.#.###.#####.### |
||||||
|
#.#.#...#.....#.# |
||||||
|
#.#.#.#####.###.# |
||||||
|
#.#.#.........#.# |
||||||
|
#.#.#.#########.# |
||||||
|
#S#.............# |
||||||
|
################# |
||||||
@ -0,0 +1,100 @@ |
|||||||
|
#+title: Solution to p16 |
||||||
|
|
||||||
|
Load map |
||||||
|
#+begin_src emacs-lisp :results none |
||||||
|
(require 'dash) |
||||||
|
(with-temp-buffer |
||||||
|
(insert-file-contents "input") |
||||||
|
(goto-char (point-min)) |
||||||
|
(replace-regexp "^\\(#.*#\\)$" "\"\\1\"") |
||||||
|
(goto-char (point-min)) |
||||||
|
(insert "(setq data '(") |
||||||
|
(goto-char (point-max)) |
||||||
|
(insert "))") |
||||||
|
(eval-buffer)) |
||||||
|
#+end_src |
||||||
|
|
||||||
|
and split into a list of list of chars |
||||||
|
#+begin_src emacs-lisp :results none |
||||||
|
(setq data-chars (-map (lambda (str) (--map (string-to-char it) (split-string str "\\|.+" t))) |
||||||
|
data) |
||||||
|
height (length data-chars) |
||||||
|
width (length (car data-chars))) |
||||||
|
|
||||||
|
(defun char-at (p) |
||||||
|
(nth (car p) (nth (cadr p) data-chars))) |
||||||
|
|
||||||
|
(setq char-things-alist '((?# . wall) |
||||||
|
(?. . free) |
||||||
|
(?S . start) |
||||||
|
(?E . end))) |
||||||
|
|
||||||
|
(defun thing-at (p) |
||||||
|
"Returns which object (if any) is present at position P" |
||||||
|
(cdr (assoc (char-at p) char-things-alist))) |
||||||
|
|
||||||
|
(setq start (list 1 (- height 2))) |
||||||
|
#+end_src |
||||||
|
|
||||||
|
Define some aux functions |
||||||
|
#+begin_src emacs-lisp :results none |
||||||
|
(setq max-lisp-eval-depth 1000000) ; burn baby burn |
||||||
|
|
||||||
|
(defun dot (a b) |
||||||
|
"Return the dot product of the two vectors" |
||||||
|
(-reduce #'+ (-map (lambda (x) (* (car x) (cdr x))) (-zip-pair a b)))) |
||||||
|
|
||||||
|
(defun neighbour (p dir) |
||||||
|
"Returns the neighbour to P in the direction DIR" |
||||||
|
(list (+ (car p) (car dir)) |
||||||
|
(+ (cadr p) (cadr dir)))) |
||||||
|
#+end_src |
||||||
|
|
||||||
|
Now, explore the maze; this function returns a list of paths and the |
||||||
|
associated scores; |
||||||
|
#+begin_src emacs-lisp |
||||||
|
(defun explore (p dir &optional score past) |
||||||
|
"Explore the maze starting at position P and in the direction |
||||||
|
DIR. Returns nil if we will dead-end or loop or the score |
||||||
|
if we reach the end" |
||||||
|
(if (eq (thing-at p) 'end) (list score) |
||||||
|
(unless (-contains-p past p) ; loop |
||||||
|
(let* ((forward-dirs (--filter (>= (dot it dir) 0) |
||||||
|
'((0 1) (0 -1) (-1 0) (1 0)))) |
||||||
|
(acceptable-dirs (--filter (not (eq (thing-at (neighbour p it)) 'wall)) forward-dirs))) |
||||||
|
(-mapcat (lambda (newdir) |
||||||
|
(explore (neighbour p newdir) newdir |
||||||
|
(+ score (if (equal newdir dir) 1 1001)) |
||||||
|
(cons p past))) |
||||||
|
acceptable-dirs))))) |
||||||
|
|
||||||
|
(explore start '(1 0) 0) |
||||||
|
#+end_src |
||||||
|
|
||||||
|
In principle the above would work as-is, but we add some bailout |
||||||
|
strategy. We record somewhere the smallest score so far. If we are |
||||||
|
beyond the smallest score there is no point proceeding any further |
||||||
|
#+begin_src emacs-lisp |
||||||
|
(setq min-score nil) |
||||||
|
|
||||||
|
(defun explore-bailout (p dir &optional score past) |
||||||
|
"Explore the maze starting at position P and in the direction |
||||||
|
DIR. Returns nil if we will dead-end or loop or the score |
||||||
|
if we reach the end" |
||||||
|
(when (or (not min-score) (< score min-score)) |
||||||
|
(if (eq (thing-at p) 'end) (setq min-score (-min (-non-nil (list score min-score)))) |
||||||
|
(unless (-contains-p past p) ; loop |
||||||
|
(let* ((forward-dirs (--filter (>= (dot it dir) 0) |
||||||
|
'((0 1) (0 -1) (-1 0) (1 0)))) |
||||||
|
(acceptable-dirs (--filter (not (eq (thing-at (neighbour p it)) 'wall)) forward-dirs))) |
||||||
|
(-each acceptable-dirs (lambda (newdir) |
||||||
|
(explore-bailout (neighbour p newdir) newdir |
||||||
|
(+ score (if (equal newdir dir) 1 1001)) |
||||||
|
(cons p past))))))))) |
||||||
|
|
||||||
|
(explore-bailout start '(1 0) 0) |
||||||
|
min-score |
||||||
|
#+end_src |
||||||
|
|
||||||
|
#+RESULTS: |
||||||
|
: 11048 |
||||||
Loading…
Reference in new issue