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