Solve day 20
This commit is contained in:
parent
d2d8a02bbc
commit
b05a0cfc7f
3 changed files with 305 additions and 0 deletions
15
input/20-0.in
Normal file
15
input/20-0.in
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
###############
|
||||||
|
#...#...#.....#
|
||||||
|
#.#.#.#.#.###.#
|
||||||
|
#S#...#.#.#...#
|
||||||
|
#######.#.#.###
|
||||||
|
#######.#.#...#
|
||||||
|
#######.#.###.#
|
||||||
|
###..E#...#...#
|
||||||
|
###.#######.###
|
||||||
|
#...###...#...#
|
||||||
|
#.#####.#.###.#
|
||||||
|
#.#...#.#.#...#
|
||||||
|
#.#.#.#.#.#.###
|
||||||
|
#...#...#...###
|
||||||
|
###############
|
||||||
141
input/20-1.in
Normal file
141
input/20-1.in
Normal file
|
|
@ -0,0 +1,141 @@
|
||||||
|
#############################################################################################################################################
|
||||||
|
#...........###...#...........###...###...#.....#...#...###.......#.....#.......#...#.......###...#...#.....#...#...#...###...#.............#
|
||||||
|
#.#########.###.#.#.#########.###.#.###.#.#.###.#.#.#.#.###.#####.#.###.#.#####.#.#.#.#####.###.#.#.#.#.###.#.#.#.#.#.#.###.#.#.###########.#
|
||||||
|
#.#...#...#...#.#.#.........#.#...#.#...#.#...#.#.#.#.#.#...#...#.#.#...#.....#.#.#.#.....#...#.#.#.#.#...#...#.#.#.#.#...#.#...#...#.......#
|
||||||
|
#.#.#.#.#.###.#.#.#########.#.#.###.#.###.###.#.#.#.#.#.#.###.#.#.#.#.#######.#.#.#.#####.###.#.#.#.#.###.#####.#.#.#.###.#.#####.#.#.#######
|
||||||
|
#...#...#...#.#.#...#.....#.#.#...#.#...#...#.#.#.#.#.#.#.#...#...#.#.#...###.#.#.#.#...#...#...#...#.#...#.....#.#...#...#...#...#...#.....#
|
||||||
|
###########.#.#.###.#.###.#.#.###.#.###.###.#.#.#.#.#.#.#.#.#######.#.#.#.###.#.#.#.#.#.###.#########.#.###.#####.#####.#####.#.#######.###.#
|
||||||
|
#...........#.#.#...#...#.#.#.#...#...#.#...#.#.#.#.#.#...#.#...###.#.#.#.#...#...#...#...#.#.........#...#.....#...#...#.....#.....#...#...#
|
||||||
|
#.###########.#.#.#####.#.#.#.#.#####.#.#.###.#.#.#.#.#####.#.#.###.#.#.#.#.#############.#.#.###########.#####.###.#.###.#########.#.###.###
|
||||||
|
#...........#.#.#.#.....#.#.#.#.....#.#.#.#...#...#...#...#.#.#.....#...#.#.#...#.......#...#...###...###.#...#.#...#...#...#...#...#...#.###
|
||||||
|
###########.#.#.#.#.#####.#.#.#####.#.#.#.#.###########.#.#.#.###########.#.#.#.#.#####.#######.###.#.###.#.#.#.#.#####.###.#.#.#.#####.#.###
|
||||||
|
#.....#.....#...#.#.....#.#.#.###...#.#.#.#...#.........#...#.#...........#...#...#...#.....#...#...#.#...#.#...#.....#.....#.#...#...#.#...#
|
||||||
|
#.###.#.#########.#####.#.#.#.###.###.#.#.###.#.#############.#.###################.#.#####.#.###.###.#.###.#########.#######.#####.#.#.###.#
|
||||||
|
#...#.#.........#.#...#.#.#.#...#.#...#.#.#...#.....#...###...#...........###.......#.....#.#.#...#...#...#...###...#.#.......#...#.#.#...#.#
|
||||||
|
###.#.#########.#.#.#.#.#.#.###.#.#.###.#.#.#######.#.#.###.#############.###.###########.#.#.#.###.#####.###.###.#.#.#.#######.#.#.#.###.#.#
|
||||||
|
###.#.#...#...#.#.#.#.#.#.#...#.#.#...#.#...#.......#.#.#...#.............#...#.........#.#.#...#...#...#...#.#...#...#...#.....#.#.#...#.#.#
|
||||||
|
###.#.#.#.#.#.#.#.#.#.#.#.###.#.#.###.#.#####.#######.#.#.###.#############.###.#######.#.#.#####.###.#.###.#.#.#########.#.#####.#.###.#.#.#
|
||||||
|
#...#...#...#...#.#.#.#.#.###.#.#.#...#.....#.#...###.#.#...#.#...#...#...#...#.#.......#...#.....###.#.....#...#.........#.#.....#.#...#.#.#
|
||||||
|
#.###############.#.#.#.#.###.#.#.#.#######.#.#.#.###.#.###.#.#.#.#.#.#.#.###.#.#.###########.#######.###########.#########.#.#####.#.###.#.#
|
||||||
|
#.#...#.........#...#...#.#...#...#.#...#...#...#...#.#.#...#...#.#.#.#.#...#...#...........#...#...#.........#...###...###.#.......#.....#.#
|
||||||
|
#.#.#.#.#######.#########.#.#######.#.#.#.#########.#.#.#.#######.#.#.#.###.###############.###.#.#.#########.#.#####.#.###.###############.#
|
||||||
|
#...#...#...###.........#.#...#.....#.#...#.........#.#.#...#.....#.#.#.#...#.........#...#.#...#.#...###...#.#.....#.#.#...#...............#
|
||||||
|
#########.#.###########.#.###.#.#####.#####.#########.#.###.#.#####.#.#.#.###.#######.#.#.#.#.###.###.###.#.#.#####.#.#.#.###.###############
|
||||||
|
#.....#...#.......#.....#.#...#...###.....#.....#...#.#.#...#.#...#.#.#.#...#.......#...#.#.#.###.#...#...#.#.#.....#.#.#...#.###.......#...#
|
||||||
|
#.###.#.#########.#.#####.#.#####.#######.#####.#.#.#.#.#.###.#.#.#.#.#.###.#######.#####.#.#.###.#.###.###.#.#.#####.#.###.#.###.#####.#.#.#
|
||||||
|
#...#.#.........#.#.....#.#.....#.......#.#.....#.#.#.#.#...#.#.#.#.#.#...#...#...#.....#...#...#.#...#...#.#.#.....#.#.#...#...#...#...#.#.#
|
||||||
|
###.#.#########.#.#####.#.#####.#######.#.#.#####.#.#.#.###.#.#.#.#.#.###.###.#.#.#####.#######.#.###.###.#.#.#####.#.#.#.#####.###.#.###.#.#
|
||||||
|
#...#.........#.#.......#.....#.#.......#.#.....#.#.#.#.#...#.#.#.#.#...#.#...#.#.#...#.#.......#...#...#.#.#.#.....#.#...#...#.....#.....#.#
|
||||||
|
#.###########.#.#############.#.#.#######.#####.#.#.#.#.#.###.#.#.#.###.#.#.###.#.#.#.#.#.#########.###.#.#.#.#.#####.#####.#.#############.#
|
||||||
|
#...........#...#.....#.....#...#...###...#.....#.#.#.#.#...#...#.#...#...#.#...#.#.#.#.#.###...###...#...#.#.#.....#.#.....#.#...#.........#
|
||||||
|
###########.#####.###.#.###.#######.###.###.#####.#.#.#.###.#####.###.#####.#.###.#.#.#.#.###.#.#####.#####.#.#####.#.#.#####.#.#.#.#########
|
||||||
|
#...#.......#.....###...###...#...#.#...#...#...#.#...#...#.#.....###...#...#...#.#.#...#...#.#.#...#.#.....#.....#...#.....#...#...#.......#
|
||||||
|
#.#.#.#######.###############.#.#.#.#.###.###.#.#.#######.#.#.#########.#.#####.#.#.#######.#.#.#.#.#.#.#########.#########.#########.#####.#
|
||||||
|
#.#.#.........#...#...#...###...#.#.#...#.###.#.#.#.......#.#.#...#...#.#.#...#.#.#.....#...#.#.#.#.#.#.###...###...#.....#.#.....###.#.....#
|
||||||
|
#.#.###########.#.#.#.#.#.#######.#.###.#.###.#.#.#.#######.#.#.#.#.#.#.#.#.#.#.#.#####.#.###.#.#.#.#.#.###.#.#####.#.###.#.#.###.###.#.#####
|
||||||
|
#.#.............#...#...#.........#...#.#.#...#.#.#.#...#...#.#.#...#.#.#.#.#.#.#.#...#.#.#...#.#.#.#.#...#.#.#...#.#.###...#.#...#...#...###
|
||||||
|
#.###################################.#.#.#.###.#.#.#.#.#.###.#.#####.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#.###.#.#.#.#.#.#.#######.#.###.#####.###
|
||||||
|
#...............................#...#...#...###.#.#...#.#...#.#...#...#.#...#.#.#.#.#...#.#...#.#.#...###...#...#.#.#...#...#.#.....#...#...#
|
||||||
|
###############################.#.#.###########.#.#####.###.#.###.#.###.#####.#.#.#.#####.###.#.#.###############.#.###.#.#.#.#######.#.###.#
|
||||||
|
#...#...###...#.................#.#.#...#.....#.#.#.....#...#.#...#...#...#...#.#.#...###.#...#.#.#...............#.#...#.#.#.#.......#.....#
|
||||||
|
#.#.#.#.###.#.#.#################.#.#.#.#.###.#.#.#.#####.###.#.#####.###.#.###.#.###.###.#.###.#.#.###############.#.###.#.#.#.#############
|
||||||
|
#.#.#.#.#...#...#...#.............#...#...#...#...#.....#.#...#.....#...#.#...#.#...#...#.#...#...#.......#.........#.....#...#...#.....#...#
|
||||||
|
#.#.#.#.#.#######.#.#.#####################.###########.#.#.#######.###.#.###.#.###.###.#.###.###########.#.#####################.#.###.#.#.#
|
||||||
|
#.#.#.#.#...#.....#...#...................#.....#.......#.#.#...#...#...#...#.#.###...#.#.....#...........#...#.....#.....#.......#.#...#.#.#
|
||||||
|
#.#.#.#.###.#.#########.#################.#####.#.#######.#.#.#.#.###.#####.#.#.#####.#.#######.#############.#.###.#.###.#.#######.#.###.#.#
|
||||||
|
#.#...#.....#.#.........#...#...#.......#...#...#...#...#.#.#.#.#.###.#...#.#...#.....#...#...#.....#.........#...#.#.#...#.........#...#.#.#
|
||||||
|
#.###########.#.#########.#.#.#.#.#####.###.#.#####.#.#.#.#.#.#.#.###.#.#.#.#####.#######.#.#.#####.#.###########.#.#.#.###############.#.#.#
|
||||||
|
#.#...#...#...#...#.....#.#.#.#...#...#...#...#...#.#.#.#.#.#.#.#.#...#.#.#.....#.......#...#.....#...#.....#.....#.#.#...#...#...#...#...#.#
|
||||||
|
#.#.#.#.#.#.#####.#.###.#.#.#.#####.#.###.#####.#.#.#.#.#.#.#.#.#.#.###.#.#####.#######.#########.#####.###.#.#####.#.###.#.#.#.#.#.#.#####.#
|
||||||
|
#...#...#...#.....#.#...#.#...#...#.#...#.......#.#.#.#.#.#.#.#.#.#...#.#.#...#.#.......#...#.....#...#...#.#.....#.#.###.#.#.#.#.#.#.#.....#
|
||||||
|
#############.#####.#.###.#####.#.#.###.#########.#.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#######.#.#.#####.#.###.#.#####.#.#.###.#.#.#.#.#.#.#.#####
|
||||||
|
#.....###...#.....#.#...#.#.....#.#...#.#.........#...#...#...#...###...#.#.#...#.......#.#.#...#...#.....#.......#...#...#.#.#.#.#.#.#.#...#
|
||||||
|
#.###.###.#.#####.#.###.#.#.#####.###.#.#.###############################.#.###########.#.#.###.#.#####################.###.#.#.#.#.#.#.#.#.#
|
||||||
|
#...#.....#.#.....#.###...#.....#.....#...###############...###...........#...#.........#.#.#...#.....#.......#...#...#...#.#.#.#...#.#...#.#
|
||||||
|
###.#######.#.#####.###########.#########################.#.###.#############.#.#########.#.#.#######.#.#####.#.#.#.#.###.#.#.#.#####.#####.#
|
||||||
|
###.......#.#.......#...#...###.........###############...#...#.#...#...#...#.#.#...#...#.#.#.#.......#.#.....#.#.#.#.###...#...#...#.....#.#
|
||||||
|
#########.#.#########.#.#.#.###########.###############.#####.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#######.#.#####.#.#.#.###########.#.#####.#.#
|
||||||
|
#.........#.....#.....#...#.............###############...#...#...#...#.#.#.#.#...#...#...#...#.........#.....#.#...#.............#.....#.#.#
|
||||||
|
#.#############.#.#######################################.#.###########.#.#.#.###############################.#.#######################.#.#.#
|
||||||
|
#...#.........#.#.......................###############...#.........###...#...#.....###...#...#...............#.#.................#.....#...#
|
||||||
|
###.#.#######.#.#######################.###############.###########.###########.###.###.#.#.#.#.###############.#.###############.#.#########
|
||||||
|
###...#.......#.......................#...#############S#.....#.....#...#...###...#.....#.#.#.#.................#.............###.#.........#
|
||||||
|
#######.#############################.###.###############.###.#.#####.#.#.#.#####.#######.#.#.###############################.###.#########.#
|
||||||
|
#.......#...#...................#####.....#######.........###...###...#...#...###.......#.#.#.#...###...#.....#...#...#.....#...#.#.....#...#
|
||||||
|
#.#######.#.#.#################.#################.#################.#########.#########.#.#.#.#.#.###.#.#.###.#.#.#.#.#.###.###.#.#.###.#.###
|
||||||
|
#...#.....#...#.................#################...........#.....#.#...#...#...#.......#...#.#.#.#...#...###...#...#.#...#.#...#.#...#.#...#
|
||||||
|
###.#.#########.###########################################.#.###.#.#.#.#.#.###.#.###########.#.#.#.#################.###.#.#.###.###.#.###.#
|
||||||
|
###.#.#.......#...#...#.........#E#...................#...#...#...#.#.#...#...#...#.........#...#.#...#.............#.#...#...###...#.#.....#
|
||||||
|
###.#.#.#####.###.#.#.#.#######.#.#.#################.#.#.#####.###.#.#######.#####.#######.#####.###.#.###########.#.#.###########.#.#######
|
||||||
|
#...#.#.....#...#...#...###...#...#.................#...#.....#...#...#.....#...#...#...###.....#.....#.#...........#...#.........#.#.#.....#
|
||||||
|
#.###.#####.###.###########.#.#####################.#########.###.#####.###.###.#.###.#.#######.#######.#.###############.#######.#.#.#.###.#
|
||||||
|
#.....#...#...#.............#.................#...#.......###...#.....#...#.###...#...#.........#...#...#...#.......#...#.#.......#...#...#.#
|
||||||
|
#######.#.###.###############################.#.#.#######.#####.#####.###.#.#######.#############.#.#.#####.#.#####.#.#.#.#.#############.#.#
|
||||||
|
#.......#...#.......#.......................#...#.......#.....#.#.....#...#.#.......#...#.....#...#...###...#.....#...#...#.....#...#...#.#.#
|
||||||
|
#.#########.#######.#.#####################.###########.#####.#.#.#####.###.#.#######.#.#.###.#.#########.#######.#############.#.#.#.#.#.#.#
|
||||||
|
#.#.......#.......#.#.#.........###...#...#.....###...#.......#...#...#.#...#.........#.#...#.#.#.........#...###.#.............#.#...#.#.#.#
|
||||||
|
#.#.#####.#######.#.#.#.#######.###.#.#.#.#####.###.#.#############.#.#.#.#############.###.#.#.#.#########.#.###.#.#############.#####.#.#.#
|
||||||
|
#.#.#...#.....#...#...#.#.....#.....#...#.....#.#...#.............#.#.#.#...###...#...#.....#...#...........#.....#.....#...#...#...#...#.#.#
|
||||||
|
#.#.#.#.#####.#.#######.#.###.###############.#.#.###############.#.#.#.###.###.#.#.#.#################################.#.#.#.#.###.#.###.#.#
|
||||||
|
#.#.#.#.......#...#...#...###...............#...#...#.............#.#.#.#...#...#...#.#.......###...#.............#.....#.#...#.....#.#...#.#
|
||||||
|
#.#.#.###########.#.#.#####################.#######.#.#############.#.#.#.###.#######.#.#####.###.#.#.###########.#.#####.###########.#.###.#
|
||||||
|
#.#.#...........#.#.#.#...#...#...#.......#.....###.#.#.....###...#.#.#.#...#.......#...#.....#...#.#.....###...#...###...#.........#...#...#
|
||||||
|
#.#.###########.#.#.#.#.#.#.#.#.#.#.#####.#####.###.#.#.###.###.#.#.#.#.###.#######.#####.#####.###.#####.###.#.#######.###.#######.#####.###
|
||||||
|
#.#.#.......###.#...#...#...#...#.#...#...#...#.....#.#...#.#...#...#.#.#...#.......#...#.......#...#...#.....#...###...#...#...###.#.....###
|
||||||
|
#.#.#.#####.###.#################.###.#.###.#.#######.###.#.#.#######.#.#.###.#######.#.#########.###.#.#########.###.###.###.#.###.#.#######
|
||||||
|
#.#.#.#...#.#...#.......#.......#.....#.....#.#.....#...#.#...#.......#.#...#.........#...#.....#.....#.........#...#.#...#...#...#...#...###
|
||||||
|
#.#.#.#.#.#.#.###.#####.#.#####.#############.#.###.###.#.#####.#######.###.#############.#.###.###############.###.#.#.###.#####.#####.#.###
|
||||||
|
#.#.#...#.#.#...#...###...#.....#...........#.#.###.....#.#.....###...#.#...#.........###...###.#.............#...#...#.###...#...#.....#...#
|
||||||
|
#.#.#####.#.###.###.#######.#####.#########.#.#.#########.#.#######.#.#.#.###.#######.#########.#.###########.###.#####.#####.#.###.#######.#
|
||||||
|
#.#.#.....#.....#...#.......#...#.#.........#...#...#.....#...#...#.#.#.#.###...#.....#.......#...#...........###.....#.......#.....#...#...#
|
||||||
|
#.#.#.###########.###.#######.#.#.#.#############.#.#.#######.#.#.#.#.#.#.#####.#.#####.#####.#####.#################.###############.#.#.###
|
||||||
|
#...#...#...#...#...#.....#...#.#.#.#...###.......#.#.....#...#.#.#.#.#.#.....#.#.#...#.....#.......#...............#.#.....#...#.....#...###
|
||||||
|
#######.#.#.#.#.###.#####.#.###.#.#.#.#.###.#######.#####.#.###.#.#.#.#.#####.#.#.#.#.#####.#########.#############.#.#.###.#.#.#.###########
|
||||||
|
#.......#.#...#.....#...#...###...#...#...#.#...#...#...#.#...#.#.#.#.#...#...#.#.#.#.#...#.....#...#.#.............#...###.#.#.#...........#
|
||||||
|
#.#######.###########.#.#################.#.#.#.#.###.#.#.###.#.#.#.#.###.#.###.#.#.#.#.#.#####.#.#.#.#.###################.#.#.###########.#
|
||||||
|
#...#...#...#.........#...###.............#.#.#...#...#...#...#.#.#.#.....#.....#.#.#.#.#.###...#.#...#...................#.#.#...#.....#...#
|
||||||
|
###.#.#.###.#.###########.###.#############.#.#####.#######.###.#.#.#############.#.#.#.#.###.###.#######################.#.#.###.#.###.#.###
|
||||||
|
###...#.....#...........#...#.............#.#.....#.......#.###.#.#.......#.......#.#.#.#...#.....###...#.............#...#...#...#.###...###
|
||||||
|
#######################.###.#############.#.#####.#######.#.###.#.#######.#.#######.#.#.###.#########.#.#.###########.#.#######.###.#########
|
||||||
|
#...................###...#...............#.....#...#.....#...#.#.#...#...#.....#...#...#...###...#...#...#.....#...#...###...#...#.....#...#
|
||||||
|
#.#################.#####.#####################.###.#.#######.#.#.#.#.#.#######.#.#######.#####.#.#.#######.###.#.#.#######.#.###.#####.#.#.#
|
||||||
|
#.................#.#...#...........#.....#...#.#...#.....#...#.#.#.#.#.#.......#.......#.#...#.#.#.......#...#...#.........#...#.....#...#.#
|
||||||
|
#################.#.#.#.###########.#.###.#.#.#.#.#######.#.###.#.#.#.#.#.#############.#.#.#.#.#.#######.###.#################.#####.#####.#
|
||||||
|
#...#...#...#...#.#...#.......#.....#.#...#.#.#.#.#...###.#.###.#.#.#.#.#.#...###...###.#.#.#.#.#.#...###.....#...#...........#.....#.....#.#
|
||||||
|
#.#.#.#.#.#.#.#.#.###########.#.#####.#.###.#.#.#.#.#.###.#.###.#.#.#.#.#.#.#.###.#.###.#.#.#.#.#.#.#.#########.#.#.#########.#####.#####.#.#
|
||||||
|
#.#...#...#...#.#...........#.#.....#.#.#...#.#.#.#.#.#...#...#.#.#.#.#.#.#.#...#.#.#...#...#...#.#.#.#.......#.#.#.........#.#...#.#.....#.#
|
||||||
|
#.#############.###########.#.#####.#.#.#.###.#.#.#.#.#.#####.#.#.#.#.#.#.#.###.#.#.#.###########.#.#.#.#####.#.#.#########.#.#.#.#.#.#####.#
|
||||||
|
#.......#.....#.#...........#.......#.#.#...#.#.#.#.#...#.....#.#...#.#.#.#.#...#.#.#.......#.....#.#.#...###.#.#.#.....#...#...#...#.#...#.#
|
||||||
|
#######.#.###.#.#.###################.#.###.#.#.#.#.#####.#####.#####.#.#.#.#.###.#.#######.#.#####.#.###.###.#.#.#.###.#.###########.#.#.#.#
|
||||||
|
#.......#.#...#.#...................#.#.#...#.#.#...#.....#...#.....#.#.#.#.#...#.#...#.....#...#...#.#...#...#.#.#...#...#.....#...#.#.#.#.#
|
||||||
|
#.#######.#.###.###################.#.#.#.###.#.#####.#####.#.#####.#.#.#.#.###.#.###.#.#######.#.###.#.###.###.#.###.#####.###.#.#.#.#.#.#.#
|
||||||
|
#.#.......#...#.....................#.#.#...#.#.#.....#.....#...#...#.#.#...#...#...#.#.#.......#...#.#.###...#.#.#...#...#.#...#.#.#.#.#.#.#
|
||||||
|
#.#.#########.#######################.#.###.#.#.#.#####.#######.#.###.#.#####.#####.#.#.#.#########.#.#.#####.#.#.#.###.#.#.#.###.#.#.#.#.#.#
|
||||||
|
#...#.........#.......#.....#...#...#.#...#.#...#.....#...#.....#.###.#.#...#.#.....#.#.#...#...#...#.#.....#...#.#.....#...#...#.#.#...#...#
|
||||||
|
#####.#########.#####.#.###.#.#.#.#.#.###.#.#########.###.#.#####.###.#.#.#.#.#.#####.#.###.#.#.#.###.#####.#####.#############.#.#.#########
|
||||||
|
#...#.........#.#...#...###.#.#...#...###.#.........#.....#.....#.#...#.#.#...#.....#...###...#.#...#...#...#.....#.....#.....#...#...#.....#
|
||||||
|
#.#.#########.#.#.#.#######.#.###########.#########.###########.#.#.###.#.#########.###########.###.###.#.###.#####.###.#.###.#######.#.###.#
|
||||||
|
#.#...#.......#.#.#.........#...#.........#.........###...#.....#.#...#.#...#.......#...........#...#...#...#.......#...#...#...#...#...#...#
|
||||||
|
#.###.#.#######.#.#############.#.#########.###########.#.#.#####.###.#.###.#.#######.###########.###.#####.#########.#####.###.#.#.#####.###
|
||||||
|
#...#.#...#.....#.#...#...#...#.#.........#...........#.#...#.....###...###.#.....#...#.......#...#...#...#.........#.#.....#...#.#.....#...#
|
||||||
|
###.#.###.#.#####.#.#.#.#.#.#.#.#########.###########.#.#####.#############.#####.#.###.#####.#.###.###.#.#########.#.#.#####.###.#####.###.#
|
||||||
|
#...#.#...#.....#...#.#.#.#.#...#.........#...#.......#.#...#...###.........#.....#...#.#...#.#.###...#.#...#.....#.#.#...###...#...#...#...#
|
||||||
|
#.###.#.#######.#####.#.#.#.#####.#########.#.#.#######.#.#.###.###.#########.#######.#.#.#.#.#.#####.#.###.#.###.#.#.###.#####.###.#.###.###
|
||||||
|
#...#...#.....#.#.....#.#.#.#...#.....#...#.#.#.....###...#...#.#...#.....#...#...###...#.#...#.....#.#.#...#...#...#.....#...#...#.#...#...#
|
||||||
|
###.#####.###.#.#.#####.#.#.#.#.#####.#.#.#.#.#####.#########.#.#.###.###.#.###.#.#######.#########.#.#.#.#####.###########.#.###.#.###.###.#
|
||||||
|
#...#...#...#.#.#.#...#.#.#.#.#.......#.#.#.#.#...#.........#.#.#...#.#...#.....#.....#...#...#.....#.#.#.#...#...###...#...#...#.#.#...#...#
|
||||||
|
#.###.#.###.#.#.#.#.#.#.#.#.#.#########.#.#.#.#.#.#########.#.#.###.#.#.#############.#.###.#.#.#####.#.#.#.#.###.###.#.#.#####.#.#.#.###.###
|
||||||
|
#.....#.#...#.#.#...#.#.#.#.#.#.....#...#.#.#.#.#.#...#.....#.#...#...#.#...#...#...#.#...#.#.#.....#.#.#.#.#...#.....#...#.....#...#...#...#
|
||||||
|
#######.#.###.#.#####.#.#.#.#.#.###.#.###.#.#.#.#.#.#.#.#####.###.#####.#.#.#.#.#.#.#.###.#.#.#####.#.#.#.#.###.###########.###########.###.#
|
||||||
|
#.......#...#...###...#.#.#.#.#.###...###.#.#...#.#.#.#...###.#...#...#.#.#.#.#.#.#...###...#.#...#.#.#.#.#...#.#...#.....#.......#...#...#.#
|
||||||
|
#.#########.#######.###.#.#.#.#.#########.#.#####.#.#.###.###.#.###.#.#.#.#.#.#.#.###########.#.#.#.#.#.#.###.#.#.#.#.###.#######.#.#.###.#.#
|
||||||
|
#.....#.....#.......#...#...#...#.........#.....#.#.#...#...#.#.....#.#...#...#.#.#...###.....#.#.#.#.#.#.#...#...#.#...#.#.......#.#.#...#.#
|
||||||
|
#####.#.#####.#######.###########.#############.#.#.###.###.#.#######.#########.#.#.#.###.#####.#.#.#.#.#.#.#######.###.#.#.#######.#.#.###.#
|
||||||
|
#.....#.#...#.#...#...###.......#.......#...#...#.#...#...#.#.#...#...#.........#...#...#.....#.#...#...#.#.......#.#...#.#.........#.#...#.#
|
||||||
|
#.#####.#.#.#.#.#.#.#####.#####.#######.#.#.#.###.###.###.#.#.#.#.#.###.###############.#####.#.#########.#######.#.#.###.###########.###.#.#
|
||||||
|
#...#...#.#...#.#...#.....#...#.........#.#.#...#...#.#...#.#.#.#.#.###.....#...#...#...#.....#.......###.#.....#.#.#.###.....#.....#...#.#.#
|
||||||
|
###.#.###.#####.#####.#####.#.###########.#.###.###.#.#.###.#.#.#.#.#######.#.#.#.#.#.###.###########.###.#.###.#.#.#.#######.#.###.###.#.#.#
|
||||||
|
#...#.#...#...#...#...#...#.#...#.....#...#.#...#...#.#...#.#.#.#.#...#.....#.#.#.#.#...#.#...#...#...#...#...#.#.#.#.......#.#...#.#...#.#.#
|
||||||
|
#.###.#.###.#.###.#.###.#.#.###.#.###.#.###.#.###.###.###.#.#.#.#.###.#.#####.#.#.#.###.#.#.#.#.#.#.###.#####.#.#.#.#######.#.###.#.#.###.#.#
|
||||||
|
#.....#.....#.....#.....#...###...###...###...###.....###...#...#.....#.......#...#.....#...#...#...###.......#...#.........#.....#...###...#
|
||||||
|
#############################################################################################################################################
|
||||||
149
src/bin/20.rs
Normal file
149
src/bin/20.rs
Normal file
|
|
@ -0,0 +1,149 @@
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
use itertools::Itertools;
|
||||||
|
|
||||||
|
static DIRECTIONS: [(isize, isize); 4] = [(0, -1), (1, 0), (0, 1), (-1, 0)];
|
||||||
|
|
||||||
|
static CHEATPOS1: [(isize, isize); 8] = [
|
||||||
|
(0, 2),
|
||||||
|
(1, 1),
|
||||||
|
(2, 0),
|
||||||
|
(1, -1),
|
||||||
|
(0, -2),
|
||||||
|
(-1, -1),
|
||||||
|
(-2, 0),
|
||||||
|
(-1, 1),
|
||||||
|
];
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let text = std::fs::read_to_string("input/20-1.in").unwrap();
|
||||||
|
|
||||||
|
let mut startx = 0;
|
||||||
|
let mut starty = 0;
|
||||||
|
|
||||||
|
let map = text
|
||||||
|
.lines()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(y, l)| {
|
||||||
|
l.chars()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(x, c)| match c {
|
||||||
|
'#' => false,
|
||||||
|
'.' => true,
|
||||||
|
'S' => {
|
||||||
|
startx = x;
|
||||||
|
starty = y;
|
||||||
|
true
|
||||||
|
}
|
||||||
|
'E' => true,
|
||||||
|
_ => unreachable!(),
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let mut path = vec![(startx, starty)];
|
||||||
|
|
||||||
|
while let Some((x, y)) = DIRECTIONS
|
||||||
|
.iter()
|
||||||
|
.filter_map(|&(dx, dy)| {
|
||||||
|
let &(lastx, lasty) = path.last()?;
|
||||||
|
let nx = lastx.checked_add_signed(dx)?;
|
||||||
|
let ny = lasty.checked_add_signed(dy)?;
|
||||||
|
|
||||||
|
if path
|
||||||
|
.last_chunk::<2>()
|
||||||
|
.is_some_and(|&[(px, py), _]| px == nx && py == ny)
|
||||||
|
{
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
if map[ny][nx] {
|
||||||
|
Some((nx, ny))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.next()
|
||||||
|
{
|
||||||
|
path.push((x, y));
|
||||||
|
}
|
||||||
|
|
||||||
|
let path_map = path
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(i, &d)| (d, i))
|
||||||
|
.collect::<HashMap<_, _>>();
|
||||||
|
|
||||||
|
let t = path
|
||||||
|
.iter()
|
||||||
|
.cartesian_product(CHEATPOS1)
|
||||||
|
.filter_map(|(&(sx, sy), (dx, dy))| {
|
||||||
|
let endx = sx.checked_add_signed(dx)?;
|
||||||
|
let endy = sy.checked_add_signed(dy)?;
|
||||||
|
|
||||||
|
if endx < map[0].len() && endy < map.len() && map[endy][endx] {
|
||||||
|
if path_map[&(endx, endy)] > 2 + path_map[&(sx, sy)] {
|
||||||
|
Some((
|
||||||
|
(sx, sy),
|
||||||
|
(endx, endy),
|
||||||
|
path_map[&(endx, endy)] - 2 - path_map[&(sx, sy)],
|
||||||
|
))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.map(|(_, _, c)| c)
|
||||||
|
.filter(|&c| c >= 100)
|
||||||
|
.count();
|
||||||
|
|
||||||
|
println!("{t}");
|
||||||
|
|
||||||
|
let duration = 20isize;
|
||||||
|
let cheatpos2 = (-duration..=duration)
|
||||||
|
.cartesian_product(-duration..=duration)
|
||||||
|
.filter(|&(dx, dy)| dx.abs() + dy.abs() <= duration)
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let t = path
|
||||||
|
.iter()
|
||||||
|
.cartesian_product(cheatpos2)
|
||||||
|
.filter_map(|(&(sx, sy), (dx, dy))| {
|
||||||
|
let endx = sx.checked_add_signed(dx)?;
|
||||||
|
let endy = sy.checked_add_signed(dy)?;
|
||||||
|
|
||||||
|
let len = (dx.abs() + dy.abs()) as usize;
|
||||||
|
|
||||||
|
if endx < map[0].len() && endy < map.len() && map[endy][endx] {
|
||||||
|
if path_map[&(endx, endy)] > len + path_map[&(sx, sy)] {
|
||||||
|
Some((
|
||||||
|
(sx, sy),
|
||||||
|
(endx, endy),
|
||||||
|
path_map[&(endx, endy)] - len - path_map[&(sx, sy)],
|
||||||
|
))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// .inspect(|d| {
|
||||||
|
// if d.0 .0 == 1 && d.0 .1 == 3 {
|
||||||
|
// dbg!(d);
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
.map(|(_, _, c)| c)
|
||||||
|
// .filter(|&c| c >= 50)
|
||||||
|
// .counts();
|
||||||
|
.filter(|&c| c >= 100)
|
||||||
|
.count();
|
||||||
|
|
||||||
|
// let mut t = t.iter().collect::<Vec<_>>();
|
||||||
|
// t.sort();
|
||||||
|
// dbg!(t);
|
||||||
|
println!("{t}");
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue