Day 20 part 1 w/ hack
This commit is contained in:
parent
6fbc06d4e1
commit
fca64c2988
102
2021/input/2021/day20.txt
Normal file
102
2021/input/2021/day20.txt
Normal file
@ -0,0 +1,102 @@
|
||||
#.#.#...###..#.##...######..###..#...#.#.#.##.##.#.#.#..##..#..###...#..#.#.#.#.#....##.##..#....##...#..#.###.###.##...####...##....#..#..#.#.###...#.#..##..#.#.......#...###..####..##..##.##.###..#.#...##...#.###.#..##..####.#.......###...####.#.#....#.#.#.#.##.##.####..#..#..##..#......##.....#..#.#..#..#.##.########.........#.###.#####...##.#...####.#..#.#..#....#.##...##.##.#.##.##......####.###.#..##.#..###.##..###.#.###...######.#######...#..##...#.......###..#.####.#.####.#.#......#.#.#.#...#..###..
|
||||
|
||||
##.##...#..#....##.####.####..##..#..###.#..##.#...##....##.##..#....##.#.#..........##...####.#.#..
|
||||
#.....#.#..##.##..#...#..#...####.##..#....#.##.#...####...##...###.#.####.##.#..#.#.....#..#..#.#.#
|
||||
###.###......#.##...#.##.###.##.#.##..#.#...##.##.#......#...#..####.###.#####.####....#.###.#.#.#.#
|
||||
..##..###..#...##.##.##.....#.###...##.#.##.####.#...#...##.#..##.##..#.....####..#.#.#.....#.#.#.##
|
||||
..##.#..##.##....##.#.#.#######...#...#..#....####......##....#..##.##..#.#.####....#...##...#..#.##
|
||||
###..##.##.#...#.#..##.....#.##.#.#.##.#..#..#.##.#.####.#.....##..#.#..#..##.##.####...####.###..#.
|
||||
..#..#.###.####.#...###.#..###.#.......#.##.##.........###..#.#########.......#####..#######..#..###
|
||||
#####.###..##.###.##.....##......##.##..###.##.#.#.#.#####.......####.#.##.#.####.###.#.###..##.####
|
||||
#...####.##..#.#####.#.###.####.#..#.##..#.##..##..###.#.##.###...#...#.#..#.#.#.###.###.#####.#.#..
|
||||
..#########.##.#.##.#.###..####.##...####.#...#..#.#.#.#.##.....##.#.###.####.....#...####...#####.#
|
||||
....####...###.#..#.####...#....#####.##.##..#...###...##.#######..#.#....#..##.#..#.#.#........#..#
|
||||
..##.#.##.#..#.#..####.#.......#..##...#......#..#.#...##.######.#...#.######.####.###.####.###.#.##
|
||||
...#.###..####...###########.##.#.#.####.##....#..#...###.#.#######..###.#.###.##..#####.#...#.#.##.
|
||||
###..##.#.....##.#...##..#.#...##..#...#..#.##....#.#####.#.##..#...##.....#..#...##.....##.#..##..#
|
||||
..##....#######.##.#..##.#..#..#.#.#....##.####.#..##.#####....##...#..######..####.##.#####....#.##
|
||||
....#.####.###...#..#.#.##.##.#...#.####.#.##...#..##...#####.#.#....#.####.#..#.#.#.#.#..#..##..#.#
|
||||
.###.#.##.#####.##.###...#...##.###......#.#.###.##.###.####..##......#...#####.......######.#.#.##.
|
||||
...#..#..##.#..##.######.....#......#......##..#.##...##.#...#.##########.#.###.####.##..##.......#.
|
||||
.##.....###.####...##.#....##.##.#.#.##..#..##..##...##...#.##..#..#.#.#.###.#..##...##...####.#..##
|
||||
##..#.....##..#####.....#....#..#.#####.#..##.#####.#..##...###.####..##..##...#####.#.....#....#.##
|
||||
...#....####.#.....##.#.#..#..#.#.#.#......#####.#.#.##...#..###.##..#...#.#.###...####.#.##.####.#.
|
||||
.###.#...##.##....##.#####..##.##.#.#.#..#..#.########...#..####.....#####.####.#.....#..#.#.#..##..
|
||||
.#..###...##.##......#.##....#...#...#.##...###...#.#..#..#.##.##...##.#..#.#.#.#.##..#.....###.#.##
|
||||
.#.#...#######..##.##.##......#.#.#..#.#####.#..#.#.##.#...#..#.##.#.###..#.#..###...##.#.#.##..#...
|
||||
.##...#....####.#...##.#....#.....##.#...#.##....#.#..##..###.#.###.#.#.##.##.#.#####.###....##.##.#
|
||||
...##...###.#.#.#....#.##.##.###.#.#..#.##.##....#.#.....#......#...##.##.#....##..#...#....#.#..##.
|
||||
.##..#.#...####.#..####.#.....##.#...#.#...####.......#....#.####.#...#..##..#...##..##.####.#.####.
|
||||
.#...###....#.#...##....##.##.##.##.###.##.##.###...##.##...#.###.##...#...#...#..####.###..#.#..#..
|
||||
.##.#..#..#.#####...#.#.#..##...##.####.......######.#.#.#####....####....##.###.##..#.........#.##.
|
||||
#.###...#.##...###....##.....#...##.#..##.##..##.#...#..#..#.#.###..#.#...#.......#.####..#...###..#
|
||||
#.###...#.####..#.##....##.#########..#......##.###...#.##.###.#.#.#..####......#####.###..#.#....#.
|
||||
#.#.....####.#..###..#.....#....#....#####.#.#...#.##..#####.##..#.#####....####.#..#######.##.#..##
|
||||
##.#..##..##.###...##.###.....#...##....#..#.####.###....##....##.##...###.#.#......####.#..#...####
|
||||
...#####.#.#....#.#..#..#......###.##.##.##.#....#......#..#.#.##..##.#....##.#.#....#.#.#...#####.#
|
||||
#....#.#..#.##..#..#.#.##....#..#.##..#..##.#.###.#.###..##..#..#..###.##.....##.#.#....#####.#..#.#
|
||||
#.#.##.#...#..###.##....#.#...#.#....######....##...#.###..##..#....##.#####..##.#.##.###...##.#.#.#
|
||||
.##..##.##.####..##.#.#..#.#.###..#.#..#.#.##...#####.##.#.....#.....##....###..#.###.##...#...#...#
|
||||
###.#.###..##...####.#.#...#.##..#.##.#..#..########.###.###.#.#.###.####.#.#..#..#...#.###....##...
|
||||
##.##....#....#.##.##.#.#.##.#....##.####.#..##.##.#.##..#.#.##..##.####..#.#.##...#.##...#...#..##.
|
||||
#.##.##..#......##.#.#.#..#...#.##...#.#..###..#.#.#....##.#...#...###.#..#.###..#.######...######..
|
||||
#.#......###.#.#..#.......##.#...###.#..###.#.#.###.#.##.....######.##.#.#...#.####...###.#.....####
|
||||
#######.#.#.##.#.##...#...##..####..#.###....#..#.#...##.#......#..#.........##.#..#.##.#####.#####.
|
||||
##.###....###.###.####.#......#.#.##.###..#####.###...######....#...#...###.#..#..#.###..#..#.###...
|
||||
.#.#...#..###.#.###.#..#.#.#####..#.....####.#..##...####..#..#.#....##.##...####...#..##.##...#####
|
||||
#.###.####.######.....##..##..#.#...#.#####.#..###.#.#.....#.#.#####.....#.#..####..##..####.#.#...#
|
||||
#...###.####.#.....##.#.###.....#..#..#..#.#.....##...#.#.####..#.#.#.#####..#..#.##...#...##....###
|
||||
#.#..#####...####.#.#...#.#####.#..#.###..##......##..#....##...#.####...###.###..#..#..#.#.#####...
|
||||
.##..#.####.###.###..####..###.###.....###..#..##.#..#.###.##..........#.#..#.##..#.###.##...####.#.
|
||||
#.#.##....#..###..##.#..#......#.#.#.#.#####....####.....#.####..###.#.#.#...####.###..#####.....##.
|
||||
##....#...#....###.#.###.#..##...#.#..#..##......#.#.##.##..###...#..##.##...#.##..#.######.#..#.#.#
|
||||
.###..#...###...####..###.#.###.#..####...##.##.#....##.#..#.####....##.####......##.#.#..#..#.#.##.
|
||||
.###..##...##..#.##......#.#..#.#..#.#..##.#######.###..####...###.####.##.###.#####....##..###.##.#
|
||||
##..#.#...#####..##..#.###.#..#..##.#...####....#...##.#.##..#.#..#.##.###.#.######..##.#.#.#..###..
|
||||
..##.##.##......#..#..#.##....##.#.#.###.#..#.#...#.#.#.##.#..##.#.#####.#.#.......#.#....####.#....
|
||||
....##....#######......##.#..#..#..#...##..##..#..##.#.#.#.##...#######.####.#..###..#.####.####....
|
||||
#..##....###.##....##.##.#####.######.######.#.#####.#..#....#....#.##..##..##.#...##..##..#.#.#..##
|
||||
##.##..##.#..#...####.#..##.##...#....#...#.##...#.##..#....##....#..####..##....#..##.####......#.#
|
||||
.#.##....#######.....#.##.##..####.#.#.##...##..#.#..##...#..##...#.##......####...#...#...#...#...#
|
||||
..#..#.###..#.#.##.#.#.#.#...###..#.##.##...#.##.....###.#......####........#####..#....#####...#.#.
|
||||
.###..##..#.##.###.##..###....#.###.#...#.###.####.#..#....##......#.#...#.##...#.##.#.#.####....##.
|
||||
#..###.#..#...###.##.###..########.##..#...#..##.#..##.##.##..#...#.####..###.#.####.###..##..####..
|
||||
...#.###..##..#.##.#.#######.###.##.#.###.###...#..#.##..#######.#.#####....#..##.###.###...##..#.#.
|
||||
####..#.#.######..###...#..#...##.#.#..##.#....##.##.#.#...#....##....####.###.#...#.#...########.#.
|
||||
...#####..#.#.####.#.#.#..##....#######.##..###.###.##...#.#.###...##.####.#..##..#.#..####.#####...
|
||||
..###.##.##.##.###.##.#.#.#.##..##..#.#.#.##..#####.##..##.##.##.#.....#.####.#..##.#.####.#........
|
||||
##.###....###..###..#.#..##..#..###..#.###...#.#.....#.#...#.#..#.#.#....##...#....##.##......#.....
|
||||
.....##.#.####.######..####..#..####.####.#.#.#.#..#..#.#.#.##.#.##...##..#.##.##.#.#..#.####...#...
|
||||
#..##.#..##.#####.#.#..#..#.#.#..##..#..##.#.#..##.#.#.#..####.##.#.###...######...##....###.#.#..##
|
||||
##.#..##.#.#####.##..###.##.##......#####...#.....#..#..#####...#....##.###.....#....###..###.##.#.#
|
||||
.#.###........##..##.####...###.#.####..#.#.....###..#..#..#..###..#.#.#.####..####.##.....##.###.##
|
||||
#..####.#..#.#.##..#.....#.####..#.##.#.#...##...#..#..#.#.#.#...####.###.##....#.####.##..###.#.##.
|
||||
.#...#..#..#####..#....##.#........##..#..#..##.########..#...####.#..#..#..###...##.##...#.........
|
||||
.####....#.#.#.#..#.#..#.######...#..##.......#..#.##....#.#.#.###.#.##.###..#.#..##.####.#...#..#..
|
||||
...#.######.###.#.##.#.######.##..##.......#..#.###..#####..#.###..##.##...###...#..#.#..##...#.#..#
|
||||
#....##.#.#...#.#.##.##.#####.....##..#..##.##...#..#####.#.###...#######...#...#..##.#.###.......##
|
||||
#.###......#.##.##.#..######.#.##...#.##...#.###...##...#..##....#..###.#.###.#..##..####.##.##.....
|
||||
..#.#...#.#.####..#.#.#...#..##..##.....#..#..##.#...###....#.#.####...#.##....##...#..#####....##..
|
||||
####.##...###...#..#.###.#..#.#......##...####.#####..##...##.###.##.##.##..#####.#.###....#...###.#
|
||||
#.#...###.....#.....#.#.....####.##.#..#..#.#.#.#..###.##...#.#..##.#..##.###.#.#.###....#####.##...
|
||||
...##.#.####.##..###..###.#...##..##.#.#.#.##.#.##.#.##.#....#...##...####.###..#.##..#..##..##.##.#
|
||||
###...#...#..#..#..##..#.#..##...#..###....#..#.##.###..#####.#..###..#......##.####..#.#.#....#####
|
||||
#.#..#.####.##..#......###..#.###....#.#....#..#..#.#.#.....#.##...#..##...##..#..##..#...####...#..
|
||||
.#.....#.###..##.#.##..##.##..#..#.#..##.#......#.#.#....#####.####....###..###.###...####.#.....###
|
||||
..##.##...##.#.##.#....##.#.#.....########.##########........#.###..#..#.#.....#.###..#.#.###.###.#.
|
||||
####.#..##.#..##..#####.#.....###....#.#..#.#..##..#..#....#..####.#.....#..##.#..#.#.###.#.#.##.##.
|
||||
.##.##....##..#..#.#....###....#.#...##..#..#..##.#..##..##.#..######.#.##..##.#.######..#.#.###..##
|
||||
###..#..#####.#....#..###.###.##.##..####..#.#....##........#.##..#####...######.##.#...#.#####...#.
|
||||
.#.#..##.......#..##....#...#.########.#...###.##.#.##.##.##.#.#.#....###..###..#...#...#.#.###...##
|
||||
.##..######.#.#..#......#...##....#.###.#.##..#.....#...#.##.#..#.#.#..#####.#####.##......##..#.##.
|
||||
##.#.###....###.##..#.#..####.......######.#...###.#.#.##.#.....####....#......##...###.##.#.#####..
|
||||
#.###.#.##.##..##..#..#..##...##.#..###.#.#.....####..####..#...#.#.##.###.#..#..#.##...#..##.#.###.
|
||||
..##.##....##...###..#######..#...##....###.#..###..###....###..##....##.#..##..##..##.#.###.#.#..##
|
||||
..#.#..#.####.#.#.#..###.###.........#.#.####.##.#.##....##..#.#.#...#.###.#.##.##.#....#.#.#.#..#..
|
||||
...##....###.##.##.##.##...#.##.....#.###..##....#..#.##...#..#..##..#...#..###.##.##..#.#.#######..
|
||||
..#.#.#..##.#.#..##.##.##..#...#.##.#..#.#..####..##....#.#.#....###...#..##...##.#..##.##....##...#
|
||||
...###.########....##...##..#.####..#######.#..####...###......##....#..#....###..###..#...####.##..
|
||||
.##..###.....#.###.....##.###.####.######.##.#..#.#.###.###.#.#...#.##..#..###.#.#....##.#####....#.
|
||||
###..##.####.##.####.#.##.#...#.##.#..##.###.#.###..########.#.#..#.###...##.###.....#..#####.#..##.
|
||||
...##.##.###..#.#####..#.#.#.#..#..#...#...##.....#.##...###.#.#.####...#.....####.##.####...#..###.
|
||||
#.###..###..###..####..#..##..#########..#...##..#........#..#..#####.###..###..#...#..#..###.#.##..
|
||||
420
2021/input/2021/day22.txt
Normal file
420
2021/input/2021/day22.txt
Normal file
@ -0,0 +1,420 @@
|
||||
on x=-46..2,y=-26..20,z=-39..5
|
||||
on x=0..44,y=-44..0,z=-19..32
|
||||
on x=-44..10,y=-20..28,z=4..48
|
||||
on x=-12..39,y=-35..9,z=-12..36
|
||||
on x=-20..31,y=-15..36,z=-44..2
|
||||
on x=-18..36,y=-43..8,z=-12..41
|
||||
on x=-24..27,y=-5..39,z=-30..24
|
||||
on x=-40..4,y=-20..28,z=-33..14
|
||||
on x=-16..30,y=-16..31,z=-12..32
|
||||
on x=-3..48,y=-27..18,z=-5..39
|
||||
off x=-37..-22,y=24..41,z=20..38
|
||||
on x=-33..16,y=2..49,z=-46..4
|
||||
off x=-9..2,y=29..41,z=-45..-32
|
||||
on x=-7..44,y=-27..22,z=-40..6
|
||||
off x=-43..-30,y=17..27,z=-43..-34
|
||||
on x=-13..35,y=-19..25,z=-45..2
|
||||
off x=31..45,y=36..49,z=12..28
|
||||
on x=-16..33,y=-20..27,z=-34..16
|
||||
off x=-43..-30,y=-1..17,z=2..13
|
||||
on x=-7..47,y=-8..39,z=-2..44
|
||||
on x=-51481..-16686,y=-55882..-41735,z=31858..57273
|
||||
on x=62605..83371,y=-20326..7404,z=721..31101
|
||||
on x=52622..66892,y=-53993..-42390,z=-32377..-15062
|
||||
on x=32723..65065,y=-77593..-55363,z=-14922..15024
|
||||
on x=-19522..-12277,y=-93093..-59799,z=23811..37917
|
||||
on x=71595..92156,y=-44022..-19835,z=16005..34327
|
||||
on x=-3586..34080,y=2703..21691,z=-92268..-61619
|
||||
on x=-15386..715,y=73535..97744,z=-8553..16939
|
||||
on x=-36770..-25752,y=71882..77753,z=-22483..5934
|
||||
on x=-87151..-59512,y=-52304..-38677,z=-6844..14195
|
||||
on x=-49843..-11520,y=-59097..-36023,z=-68112..-44642
|
||||
on x=-54750..-35235,y=-65545..-48408,z=8090..44796
|
||||
on x=-94375..-72818,y=9788..29493,z=-9581..832
|
||||
on x=7678..15728,y=-72950..-37506,z=43639..74189
|
||||
on x=-2150..1370,y=-47547..-22907,z=67903..86640
|
||||
on x=30996..54239,y=58993..70521,z=10200..33219
|
||||
on x=11010..19912,y=-82111..-52326,z=-59754..-28912
|
||||
on x=21482..32440,y=-86476..-62698,z=14238..24595
|
||||
on x=75846..79807,y=-34167..-20170,z=-5351..13100
|
||||
on x=-57020..-37686,y=43544..67110,z=-37496..-30899
|
||||
on x=14662..49584,y=-58025..-40735,z=-47292..-41465
|
||||
on x=-63346..-55137,y=21250..38290,z=33568..51615
|
||||
on x=-85269..-67041,y=-25194..571,z=-52696..-14325
|
||||
on x=-54438..-31138,y=-25222..3408,z=-74478..-51576
|
||||
on x=-55260..-36337,y=-36146..-21397,z=52332..57160
|
||||
on x=-65984..-51756,y=-1513..8161,z=46328..64968
|
||||
on x=28910..41579,y=-63016..-52977,z=-61128..-33613
|
||||
on x=-46241..-27998,y=52847..77588,z=6053..16826
|
||||
on x=-58382..-31024,y=-25378..11770,z=62336..77861
|
||||
on x=14836..43351,y=43097..66395,z=26797..52340
|
||||
on x=-2107..15942,y=-94637..-77185,z=-12264..-1486
|
||||
on x=52176..62331,y=-18190..8633,z=40476..60619
|
||||
on x=57517..70517,y=-13924..4531,z=46436..67802
|
||||
on x=-21645..-1991,y=-50529..-11513,z=59680..91420
|
||||
on x=-60101..-36307,y=11413..32936,z=-79198..-42467
|
||||
on x=-27245..-11982,y=12680..44262,z=61571..82539
|
||||
on x=62043..80570,y=-16742..15490,z=41267..54928
|
||||
on x=-48117..-37581,y=34828..44610,z=-59598..-49709
|
||||
on x=59522..87726,y=-16741..-1638,z=-37838..-7715
|
||||
on x=-40860..-21613,y=-63238..-50545,z=38865..68651
|
||||
on x=-53664..-45002,y=43993..64127,z=-50526..-32706
|
||||
on x=-71250..-45260,y=-45511..-32954,z=23030..44098
|
||||
on x=-50714..-25029,y=10683..33392,z=58357..85044
|
||||
on x=40647..68356,y=40530..46549,z=21996..38584
|
||||
on x=-63640..-36211,y=46146..49642,z=-56306..-41971
|
||||
on x=21790..44008,y=-41519..-38626,z=46575..60879
|
||||
on x=29993..40615,y=-74802..-65958,z=-10835..3294
|
||||
on x=63509..72412,y=33988..60123,z=17699..27626
|
||||
on x=-75402..-51635,y=-41551..-19817,z=-28290..-15067
|
||||
on x=-24611..-7664,y=-76920..-49198,z=-69901..-36628
|
||||
on x=-55000..-37217,y=-65084..-44457,z=33862..49998
|
||||
on x=-83578..-56334,y=3079..36144,z=30213..52349
|
||||
on x=-78623..-56475,y=45055..61546,z=-7798..15403
|
||||
on x=31042..53339,y=-48138..-27455,z=-74296..-40132
|
||||
on x=-16338..3820,y=-85143..-57755,z=-35857..-14502
|
||||
on x=1..30237,y=63222..92071,z=14406..27979
|
||||
on x=-50768..-29497,y=-62276..-42537,z=31270..66285
|
||||
on x=14750..33888,y=25707..41545,z=60136..71374
|
||||
on x=-73804..-51260,y=34623..68995,z=11793..27887
|
||||
on x=-22099..3107,y=29817..55030,z=-86473..-71182
|
||||
on x=44846..63690,y=-39204..-30200,z=-70048..-31226
|
||||
on x=12735..25519,y=-50839..-27301,z=-85035..-52999
|
||||
on x=-79843..-67300,y=6320..19153,z=-16078..5129
|
||||
on x=-25488..3381,y=-81495..-59824,z=-51236..-39103
|
||||
on x=29516..52668,y=-91122..-64377,z=-7299..8614
|
||||
on x=-45309..-34530,y=59207..85364,z=-5722..17346
|
||||
on x=-75869..-48145,y=-36278..-31560,z=-48241..-14556
|
||||
on x=5416..33979,y=71734..85654,z=-6354..17686
|
||||
on x=-38328..-6825,y=33508..60073,z=-73314..-49127
|
||||
on x=-16455..5840,y=-90011..-56004,z=12046..34429
|
||||
on x=19942..40435,y=-38063..-14227,z=-72406..-60179
|
||||
on x=-71208..-36468,y=-51769..-39093,z=-39553..-32066
|
||||
on x=-30611..-15238,y=-74996..-51621,z=41626..60792
|
||||
on x=-26266..-6821,y=-76803..-54508,z=26326..49720
|
||||
on x=5554..23770,y=60181..92306,z=-3903..22337
|
||||
on x=35188..60913,y=405..13616,z=-68688..-53839
|
||||
on x=-84198..-52574,y=-51383..-21298,z=959..28430
|
||||
on x=-32433..-12722,y=-58750..-50875,z=33399..60295
|
||||
on x=-42283..-20916,y=60934..71844,z=-48024..-17122
|
||||
on x=45510..69038,y=-22876..-7766,z=41312..55989
|
||||
on x=4077..26087,y=-87438..-67786,z=-6454..9574
|
||||
on x=60630..91396,y=2047..28989,z=8771..31412
|
||||
on x=-14685..3138,y=34908..62560,z=-66694..-42144
|
||||
on x=44452..66566,y=-63825..-31278,z=-33877..-24172
|
||||
on x=36589..53960,y=43341..55297,z=16299..30540
|
||||
on x=-50464..-33544,y=745..34345,z=-72288..-52398
|
||||
on x=21307..54983,y=-62869..-43283,z=41406..72552
|
||||
on x=44587..71433,y=1841..17317,z=-57698..-42925
|
||||
on x=58150..68363,y=28852..55677,z=17960..29455
|
||||
on x=-7196..19282,y=-89129..-71321,z=13723..41169
|
||||
on x=-68501..-46903,y=-26290..-15637,z=35391..42746
|
||||
on x=3892..29864,y=64133..84173,z=-8782..5299
|
||||
on x=-43516..-30450,y=26793..49391,z=53089..61207
|
||||
on x=-53171..-30883,y=-48101..-43726,z=44797..67740
|
||||
on x=68286..92818,y=-9936..15488,z=-6245..6271
|
||||
on x=-69288..-35805,y=-18686..12501,z=-63926..-46763
|
||||
on x=-13676..10358,y=29729..48962,z=-82290..-61499
|
||||
on x=-91342..-58913,y=5804..18438,z=-10738..20089
|
||||
on x=-2086..15635,y=62442..80850,z=11045..35648
|
||||
on x=-75732..-51506,y=-5835..28683,z=-57038..-22560
|
||||
on x=33708..52638,y=40215..48167,z=-64930..-42437
|
||||
on x=42559..66539,y=-46203..-29630,z=38529..49019
|
||||
on x=-49526..-43357,y=-61139..-43371,z=-59437..-20443
|
||||
on x=8103..28088,y=66204..85143,z=-25951..-13527
|
||||
on x=-72345..-62556,y=-63706..-38173,z=-17152..-1145
|
||||
on x=54774..91997,y=-37670..-12831,z=-30161..-17865
|
||||
on x=6148..25487,y=46052..71759,z=33247..65381
|
||||
on x=-57328..-49224,y=26458..36097,z=45759..52150
|
||||
on x=-39304..-28724,y=-39127..-23995,z=50978..73051
|
||||
on x=-64985..-61846,y=31392..53299,z=25687..50050
|
||||
on x=63677..86665,y=21170..35031,z=-17997..-9002
|
||||
on x=-2035..9063,y=-91127..-59256,z=-41298..-26586
|
||||
on x=-42966..-13481,y=-63752..-52787,z=39934..42013
|
||||
on x=-4052..16276,y=4300..33419,z=-97023..-69495
|
||||
on x=28754..55492,y=-63861..-30281,z=-57610..-42673
|
||||
on x=-75541..-66845,y=-16327..9136,z=-47999..-37146
|
||||
on x=-95243..-67165,y=8035..18049,z=-8895..24816
|
||||
on x=-67563..-50842,y=-47960..-21085,z=-60573..-40893
|
||||
on x=-41648..-12477,y=-20284..2911,z=-81827..-69369
|
||||
on x=-28144..-17284,y=-34620..-6183,z=-89244..-54720
|
||||
on x=65922..92404,y=-1466..6914,z=16157..39291
|
||||
on x=14668..24690,y=-77921..-61312,z=-30488..-1115
|
||||
on x=36923..56302,y=46079..74765,z=-15871..4979
|
||||
on x=-46591..-23525,y=-76935..-44182,z=-43573..-20271
|
||||
on x=29721..45936,y=6887..30073,z=59075..67521
|
||||
on x=-890..30663,y=23754..47276,z=-82425..-63230
|
||||
on x=4752..19784,y=-83727..-61899,z=33506..54760
|
||||
on x=-94526..-71296,y=-14265..-4610,z=11418..33014
|
||||
on x=58300..97221,y=-16175..4231,z=-21919..-2358
|
||||
on x=-57482..-45486,y=-67406..-47228,z=20248..37478
|
||||
on x=31402..48989,y=-62481..-50137,z=22060..47161
|
||||
on x=40599..50616,y=10759..15911,z=46121..76734
|
||||
on x=48057..61128,y=35427..62674,z=-21549..-9614
|
||||
on x=-28135..-20962,y=59633..89312,z=-13540..5340
|
||||
on x=47549..71482,y=17382..53520,z=17716..45082
|
||||
on x=78070..81154,y=-13655..13343,z=-168..16596
|
||||
on x=20673..45758,y=65526..76695,z=-13497..-36
|
||||
on x=-4786..2818,y=-4837..5549,z=-93451..-76191
|
||||
on x=14302..49076,y=61818..81437,z=-14176..9531
|
||||
on x=-68602..-53393,y=16455..38152,z=25132..43913
|
||||
on x=-24130..-13936,y=-7644..-4498,z=-85828..-59036
|
||||
on x=-11717..16687,y=10353..30087,z=-80942..-58069
|
||||
on x=12682..32617,y=58507..76138,z=20849..32759
|
||||
on x=49088..65243,y=53393..74520,z=-14943..321
|
||||
on x=-63756..-46629,y=-69037..-41666,z=-15234..-9712
|
||||
on x=44240..46104,y=1468..21751,z=46542..79291
|
||||
on x=-80700..-60977,y=24543..33596,z=-6372..11056
|
||||
on x=-72072..-64358,y=-6985..13991,z=-65594..-35346
|
||||
on x=-54425..-32669,y=-51345..-34855,z=29309..52921
|
||||
on x=57189..87162,y=14470..19132,z=-51139..-22474
|
||||
on x=76017..80222,y=-8175..18033,z=4083..27696
|
||||
on x=-42368..-31460,y=-50798..-22007,z=-66532..-47444
|
||||
on x=9223..15360,y=-54293..-43392,z=43665..64825
|
||||
on x=-50450..-28738,y=-67485..-46021,z=25963..50292
|
||||
on x=49773..57601,y=40208..61258,z=10697..36254
|
||||
on x=-87157..-62119,y=-46554..-23602,z=-33740..-21462
|
||||
on x=24144..48485,y=30406..55581,z=-63251..-41224
|
||||
on x=-57059..-28465,y=36514..59020,z=-62118..-39872
|
||||
on x=51418..73395,y=-33294..-7934,z=-55359..-46837
|
||||
on x=35051..53350,y=48381..69938,z=30992..50675
|
||||
on x=-49838..-13680,y=52337..71756,z=19703..47005
|
||||
on x=-37895..-13199,y=17817..26885,z=-85792..-66246
|
||||
on x=25443..49007,y=55523..83334,z=-38543..-8471
|
||||
on x=-83264..-53691,y=-50838..-28415,z=-45433..-11937
|
||||
on x=18129..44224,y=56025..71419,z=25496..28014
|
||||
on x=64401..91096,y=-9626..9767,z=-19328..-16234
|
||||
on x=40564..60820,y=21806..27545,z=-63583..-55689
|
||||
on x=59287..82435,y=-49803..-36598,z=-19736..10678
|
||||
on x=-61406..-31848,y=29090..48153,z=49953..68273
|
||||
on x=-80129..-63495,y=32758..49898,z=15420..28891
|
||||
on x=-71918..-59088,y=-8042..4070,z=-61979..-32744
|
||||
on x=18507..32332,y=37492..69230,z=-61212..-48361
|
||||
on x=18232..24748,y=-47573..-19392,z=-77084..-69812
|
||||
on x=3538..29122,y=49351..68476,z=-77426..-58306
|
||||
on x=14899..28875,y=33798..52962,z=-74740..-47031
|
||||
on x=-33805..-9226,y=-4797..32978,z=-87103..-57644
|
||||
on x=64283..84636,y=22189..47622,z=952..13372
|
||||
on x=48891..68906,y=11825..36343,z=34507..53080
|
||||
on x=8785..32809,y=-61933..-45683,z=42536..64070
|
||||
on x=-23386..12584,y=60365..94330,z=-35407..-19640
|
||||
on x=-69295..-63793,y=39194..55998,z=-29323..2775
|
||||
on x=-69311..-40624,y=-11655..12445,z=52893..65442
|
||||
on x=63480..66888,y=13195..36768,z=-40754..-23113
|
||||
on x=-71702..-44882,y=-34923..3115,z=36891..68959
|
||||
on x=1227..20599,y=3304..38907,z=-87371..-69194
|
||||
on x=-38051..-5608,y=66679..76678,z=-22327..-17200
|
||||
on x=-71086..-50108,y=-43265..-21453,z=45617..65108
|
||||
on x=-75499..-48938,y=-22961..2638,z=-62154..-39253
|
||||
on x=-58844..-35498,y=-73497..-60885,z=-3349..4528
|
||||
on x=-80442..-65527,y=-51151..-25462,z=14193..28272
|
||||
on x=-36446..-15525,y=2899..19438,z=54499..93589
|
||||
on x=21122..41146,y=-34781..-12126,z=-81333..-47863
|
||||
on x=40057..68736,y=12318..42116,z=-62457..-51443
|
||||
on x=14076..29019,y=44823..82163,z=29271..59964
|
||||
on x=-49251..-25009,y=47681..66203,z=-41367..-27670
|
||||
on x=-62329..-39224,y=-34111..-4674,z=-65314..-57930
|
||||
on x=-61408..-31233,y=22748..44986,z=41804..72595
|
||||
on x=-21267..231,y=-85144..-60581,z=-14979..-6323
|
||||
on x=-74958..-66383,y=-16735..2794,z=34735..59977
|
||||
on x=-23282..-12409,y=69175..83534,z=313..21732
|
||||
off x=59267..85411,y=514..23328,z=-4846..14301
|
||||
on x=-17178..9607,y=-64979..-33229,z=57298..68101
|
||||
on x=-7419..15896,y=-89840..-63418,z=-31002..-8653
|
||||
off x=-73365..-57136,y=7908..35149,z=-59465..-32345
|
||||
on x=63815..89172,y=6116..28592,z=11336..49089
|
||||
on x=13237..36417,y=-44604..-18476,z=58867..71392
|
||||
on x=-31835..-2018,y=48122..51530,z=-79384..-51387
|
||||
on x=-93617..-71409,y=-6592..18534,z=-3366..22689
|
||||
off x=29296..37825,y=29193..53548,z=-76978..-56558
|
||||
on x=10940..21199,y=-70736..-49011,z=23206..53098
|
||||
off x=46366..51784,y=-73666..-55961,z=-12714..5969
|
||||
on x=-54335..-22852,y=-7983..25369,z=-79636..-67406
|
||||
off x=-24260..2762,y=-64478..-41674,z=-64474..-45494
|
||||
on x=22187..41667,y=15612..28847,z=58068..87450
|
||||
on x=63150..83396,y=1346..33053,z=27298..45814
|
||||
off x=59837..81917,y=-17191..8875,z=5474..24724
|
||||
off x=19093..34648,y=-93372..-66153,z=-2175..27526
|
||||
off x=30666..50683,y=52749..78100,z=-17491..10648
|
||||
on x=26870..45665,y=56112..77327,z=-43808..-31865
|
||||
off x=11864..18598,y=-1684..25669,z=-97875..-71735
|
||||
on x=53157..75832,y=-29574..-16764,z=12318..43107
|
||||
on x=43719..77079,y=-55045..-20872,z=15413..38119
|
||||
off x=14623..37763,y=-89983..-54806,z=13234..35206
|
||||
off x=-20732..-6457,y=4017..28816,z=71076..89286
|
||||
on x=-20590..-14094,y=50358..65175,z=47899..66858
|
||||
on x=62320..69077,y=23748..44841,z=-7970..22293
|
||||
off x=21884..39495,y=67007..78871,z=-6077..14897
|
||||
off x=62186..75230,y=-50181..-16289,z=-14388..7026
|
||||
off x=-38405..-22937,y=-5429..28417,z=55944..88446
|
||||
on x=662..26305,y=-87554..-58836,z=-17299..2266
|
||||
on x=72718..77163,y=-1163..18561,z=-44259..-28618
|
||||
off x=22260..41297,y=-44311..-19228,z=47468..84313
|
||||
off x=-40602..-18738,y=-34574..-133,z=64944..85128
|
||||
on x=-29694..-18496,y=54923..65374,z=38879..55584
|
||||
off x=72863..81078,y=-14522..-3236,z=-33189..-20138
|
||||
off x=-42230..-18771,y=69691..87669,z=14085..23774
|
||||
off x=-9126..9929,y=68147..99240,z=-12694..-3519
|
||||
off x=-26468..-7104,y=64299..76065,z=-36099..-15599
|
||||
on x=67973..84722,y=-21303..7452,z=-18666..2678
|
||||
on x=4102..21407,y=15532..19634,z=58771..86790
|
||||
on x=37549..65086,y=-7487..-2758,z=55748..74491
|
||||
on x=-14811..4584,y=-74652..-68275,z=-38615..-8763
|
||||
off x=37106..50803,y=-53386..-44103,z=-58613..-40526
|
||||
off x=-74450..-40998,y=43771..58392,z=1444..19278
|
||||
on x=-50536..-28522,y=310..5308,z=58703..88882
|
||||
on x=-20939..3950,y=-19820..-18182,z=-93492..-57274
|
||||
off x=-73988..-70744,y=-53683..-27500,z=2877..9737
|
||||
on x=-7526..22863,y=-8072..17539,z=73403..87835
|
||||
off x=-48736..-25834,y=-83795..-55637,z=-14055..-1592
|
||||
on x=46004..70445,y=11832..29476,z=43772..50920
|
||||
off x=62244..84049,y=13880..25447,z=33699..42878
|
||||
off x=-65300..-54528,y=47126..50687,z=7884..28591
|
||||
on x=-55956..-47412,y=-68950..-31938,z=-33567..-21955
|
||||
off x=27523..54204,y=53311..66537,z=-41809..-5196
|
||||
on x=-95373..-75620,y=-27024..1838,z=3422..7457
|
||||
off x=-41424..-13493,y=-93359..-55448,z=-26642..-13733
|
||||
off x=45093..70424,y=51183..64547,z=-28549..-12261
|
||||
off x=32082..52590,y=-68034..-42190,z=24265..40002
|
||||
off x=-83441..-70495,y=2611..23905,z=-3669..20088
|
||||
off x=-5850..22395,y=11248..36413,z=-78880..-56272
|
||||
on x=78982..83822,y=-14121..143,z=-15875..5994
|
||||
off x=39610..65471,y=39412..61214,z=17938..53604
|
||||
on x=-73170..-48249,y=-48894..-33070,z=26483..60838
|
||||
on x=-68144..-52978,y=-23980..-6621,z=-59936..-34090
|
||||
on x=41115..53204,y=26168..46031,z=-63732..-34602
|
||||
off x=-47255..-20253,y=5004..35879,z=49163..83111
|
||||
off x=-63225..-49222,y=-62533..-36601,z=-935..13732
|
||||
off x=-53817..-39048,y=-81526..-62330,z=-25691..-2500
|
||||
off x=-76260..-62299,y=-29061..-19304,z=39220..48501
|
||||
off x=-80241..-49003,y=-52126..-30868,z=-9247..6617
|
||||
off x=6227..11948,y=-32268..-17660,z=-85825..-59021
|
||||
on x=-36533..-26269,y=-79451..-60932,z=1614..7881
|
||||
on x=589..25506,y=-12202..3560,z=-85890..-74851
|
||||
on x=5360..19575,y=-62141..-51745,z=45034..63905
|
||||
off x=-39349..-23146,y=23975..44390,z=48709..77537
|
||||
on x=28342..46781,y=-29976..-8233,z=57734..69595
|
||||
off x=-77303..-50182,y=8314..15684,z=-60271..-36934
|
||||
on x=15565..23346,y=-24515..5163,z=-77856..-68954
|
||||
on x=-38928..-18718,y=-26186..-6428,z=63840..76872
|
||||
off x=9997..35709,y=-60625..-56365,z=-68727..-47677
|
||||
on x=-6312..17890,y=-10921..5064,z=-91584..-67839
|
||||
off x=12562..23601,y=-59006..-25156,z=-67383..-62614
|
||||
off x=56511..85396,y=-9472..21355,z=-49007..-13930
|
||||
on x=48654..68194,y=2363..22687,z=-54149..-39844
|
||||
on x=-70180..-49056,y=-43968..-29640,z=21331..49497
|
||||
on x=375..26280,y=53582..64641,z=45975..73486
|
||||
off x=-50286..-39551,y=-69893..-49626,z=18452..52094
|
||||
off x=-55882..-33331,y=344..18448,z=-80801..-51551
|
||||
off x=57268..84471,y=-48138..-39865,z=-23525..6531
|
||||
off x=-5837..2735,y=-73830..-52479,z=41854..58096
|
||||
on x=-27554..-4489,y=53367..83205,z=31562..49332
|
||||
off x=-20742..5467,y=-65244..-27510,z=53341..76842
|
||||
off x=17914..42871,y=-53623..-33086,z=-77085..-47173
|
||||
off x=36492..49968,y=35632..41326,z=-74714..-40178
|
||||
off x=12446..45639,y=61743..75034,z=-40513..-27030
|
||||
off x=16145..43992,y=-26882..-8326,z=-82954..-59935
|
||||
on x=-23775..-7690,y=45368..50716,z=-64252..-49534
|
||||
off x=-78791..-60343,y=11003..36392,z=-58207..-42229
|
||||
on x=50675..70130,y=-21834..11787,z=34188..56587
|
||||
on x=-34986..-11593,y=71125..86822,z=-11765..10487
|
||||
off x=26121..54204,y=57376..70480,z=-44536..-14084
|
||||
off x=47869..65894,y=33992..53419,z=-56863..-28538
|
||||
off x=-24334..-8612,y=28640..61652,z=-78408..-43374
|
||||
on x=27154..47449,y=43628..62103,z=-48166..-37361
|
||||
on x=15338..32128,y=66233..90008,z=15361..36731
|
||||
on x=-48061..-32730,y=7101..33292,z=51441..75575
|
||||
off x=29688..55006,y=53948..61368,z=31296..38879
|
||||
off x=59479..82841,y=27639..46701,z=-27632..-16641
|
||||
on x=33822..55847,y=-60451..-48526,z=19976..54898
|
||||
on x=-46685..-18938,y=-76878..-56088,z=23616..39907
|
||||
off x=-74144..-59325,y=11439..22058,z=-39530..-17804
|
||||
on x=60278..85196,y=-53386..-26378,z=-7422..6296
|
||||
on x=11602..38478,y=47634..59849,z=-60457..-41436
|
||||
on x=-67981..-51375,y=-43182..-28399,z=-30170..-5548
|
||||
off x=-39484..-26626,y=46563..57448,z=-70491..-43484
|
||||
on x=-11575..6240,y=-44470..-23882,z=-80590..-52319
|
||||
off x=34368..38954,y=-77664..-45070,z=23154..37589
|
||||
on x=23476..25973,y=-81946..-53549,z=19755..36372
|
||||
on x=-70072..-56024,y=-42751..-25176,z=4968..16718
|
||||
on x=44401..55480,y=-10001..5439,z=60788..71332
|
||||
on x=-80447..-65355,y=24494..41918,z=-48047..-24893
|
||||
on x=-25175..-5264,y=59599..83851,z=-43682..-19535
|
||||
off x=-16008..-9052,y=68012..88912,z=-30931..-23360
|
||||
on x=3262..31382,y=-59562..-48713,z=-65187..-50358
|
||||
on x=-38630..-14647,y=-67513..-61283,z=21962..51871
|
||||
off x=-37398..-18396,y=-36946..-24449,z=67584..85395
|
||||
on x=-83796..-70334,y=-1617..3346,z=-42353..-5422
|
||||
on x=71118..72869,y=-13101..1991,z=30833..48589
|
||||
off x=19182..36667,y=-84948..-53662,z=-15128..-6251
|
||||
on x=-32891..-12512,y=46790..64941,z=-37805..-31758
|
||||
off x=-87853..-57958,y=-9105..10250,z=-27666..-5705
|
||||
on x=-55159..-15768,y=-23929..-9785,z=49353..69701
|
||||
off x=58381..63179,y=37782..69395,z=-5063..21127
|
||||
on x=29347..54026,y=-84030..-63792,z=20530..32897
|
||||
on x=1052..19601,y=-14750..-4884,z=70402..91679
|
||||
off x=-43193..-30770,y=63615..86118,z=-19288..-5103
|
||||
on x=59886..71212,y=-50156..-18781,z=-25959..4904
|
||||
on x=-47400..-33917,y=45116..46183,z=-52576..-42214
|
||||
off x=-2916..8013,y=72215..79301,z=12660..39986
|
||||
on x=-47600..-29671,y=-66262..-47736,z=-250..18288
|
||||
off x=-76766..-67021,y=23902..56855,z=-24188..-10948
|
||||
on x=40863..55547,y=-41154..-4752,z=-60017..-51932
|
||||
on x=19691..33799,y=-91077..-61569,z=-17018..7955
|
||||
on x=-2214..28174,y=-39590..-31800,z=59281..85857
|
||||
on x=40206..73039,y=45740..74950,z=-32389..-7431
|
||||
on x=-60834..-50842,y=-68433..-41429,z=22771..27775
|
||||
off x=31115..64073,y=-66256..-40204,z=-44062..-24526
|
||||
on x=-10832..6359,y=-85458..-70278,z=-31345..-13315
|
||||
off x=26581..36176,y=66579..67779,z=-35420..-10427
|
||||
on x=66912..86434,y=-10806..2524,z=30276..35350
|
||||
off x=60734..71718,y=-26519..-13963,z=32357..52134
|
||||
on x=64029..94207,y=-21424..4543,z=-19917..-5796
|
||||
off x=-22578..9205,y=26649..48657,z=-69531..-60261
|
||||
off x=36844..66645,y=34250..50170,z=31072..49267
|
||||
on x=-9961..-5497,y=7380..37072,z=-89348..-57961
|
||||
on x=18102..50680,y=-76562..-65621,z=4542..24597
|
||||
on x=-63529..-54599,y=-53394..-47786,z=21888..25725
|
||||
off x=63654..94850,y=965..22382,z=-31743..-2000
|
||||
on x=74998..76278,y=-37896..-10505,z=-9186..22612
|
||||
off x=-30811..2911,y=-89485..-75160,z=-36405..-3483
|
||||
off x=51745..78582,y=25188..33294,z=26010..58376
|
||||
off x=15024..35252,y=-43146..-33304,z=-73102..-57750
|
||||
on x=2426..9775,y=54690..83625,z=-41065..-25812
|
||||
off x=-24228..-570,y=-52801..-30297,z=49276..66451
|
||||
off x=-74129..-54073,y=-56542..-35923,z=-32562..-468
|
||||
off x=-2928..15901,y=15260..33101,z=67801..88745
|
||||
off x=-53099..-47112,y=-19233..13470,z=52727..69682
|
||||
off x=35876..62082,y=-29873..3214,z=64189..67241
|
||||
off x=-3064..17661,y=65230..82048,z=-410..28371
|
||||
on x=14630..34564,y=-4463..16268,z=-96585..-71246
|
||||
on x=-60251..-39251,y=-6775..3343,z=37689..65303
|
||||
off x=50322..66243,y=19278..44771,z=41067..64697
|
||||
off x=36020..61904,y=-27183..-9736,z=46137..73036
|
||||
on x=61922..69366,y=-51710..-34152,z=21534..42960
|
||||
on x=-48310..-33496,y=36461..61490,z=42916..57166
|
||||
off x=-14180..12358,y=67333..80981,z=-40807..-23314
|
||||
off x=-806..32676,y=-88882..-71765,z=10596..21784
|
||||
on x=4361..34509,y=73189..90685,z=2499..14138
|
||||
off x=-87784..-75559,y=-23875..-9307,z=-7239..13845
|
||||
on x=-68172..-53511,y=35832..49496,z=33932..46400
|
||||
on x=-55713..-37433,y=-5286..18352,z=55977..63293
|
||||
on x=-17643..17283,y=-35303..-16046,z=68866..82087
|
||||
off x=25050..58536,y=-75214..-40996,z=-53573..-16621
|
||||
off x=14898..28167,y=-85300..-58742,z=-21836..-5732
|
||||
off x=-87322..-55171,y=-35094..-10807,z=9939..27679
|
||||
on x=-56866..-31891,y=-52393..-39065,z=51551..54781
|
||||
on x=1566..33534,y=54640..59730,z=51744..60395
|
||||
on x=15272..24542,y=64983..91848,z=3089..8627
|
||||
on x=65424..83864,y=29222..36126,z=-12872..15695
|
||||
off x=-2899..17557,y=-87982..-63662,z=1631..29537
|
||||
off x=-26849..-9477,y=53092..71495,z=-64534..-33903
|
||||
on x=-8981..22557,y=22399..30246,z=-76499..-58300
|
||||
off x=-72834..-48859,y=-18764..9128,z=35760..62856
|
||||
off x=-24250..-15338,y=31706..46920,z=55005..82901
|
||||
off x=37368..45012,y=-40763..-35016,z=-60587..-38956
|
||||
on x=9616..34618,y=-61089..-34252,z=50095..76726
|
||||
off x=-14337..4309,y=-63805..-49426,z=-75783..-53417
|
||||
on x=-31091..2449,y=55254..83398,z=-55349..-29593
|
||||
on x=66679..79368,y=-43938..-18102,z=1633..26650
|
||||
on x=-32143..-25109,y=62219..88867,z=1027..29516
|
||||
170
2021/src/day20.rs
Normal file
170
2021/src/day20.rs
Normal file
@ -0,0 +1,170 @@
|
||||
use advent::prelude::*;
|
||||
use aoc_runner_derive::aoc;
|
||||
|
||||
struct Image(HashSet<(isize, isize)>);
|
||||
|
||||
impl Image {
|
||||
fn new(input: &str) -> Image {
|
||||
let rows: Vec<_> = input.lines().collect();
|
||||
let width = rows[0].len();
|
||||
Image(
|
||||
rows.iter()
|
||||
.flat_map(|row| row.as_bytes().iter())
|
||||
.enumerate()
|
||||
.filter(|(_i, b)| *b == &b'#')
|
||||
.map(|(i, _b)| ((i % width) as isize, (i / width) as isize))
|
||||
.collect(),
|
||||
)
|
||||
}
|
||||
fn lookup(&self, x: isize, y: isize, algo: &[bool]) -> usize {
|
||||
assert_eq!(algo.len(), 512);
|
||||
let mut idx = 0;
|
||||
for y_off in -1..=1 {
|
||||
for x_off in -1..=1 {
|
||||
idx <<= 1;
|
||||
let x_idx = x + x_off;
|
||||
let y_idx = y + y_off;
|
||||
idx |= if self.0.contains(&(x_idx, y_idx)) {
|
||||
1
|
||||
} else {
|
||||
0
|
||||
};
|
||||
}
|
||||
}
|
||||
idx
|
||||
}
|
||||
fn extents(&self) -> (isize, isize, isize, isize) {
|
||||
self.0.iter().fold(
|
||||
(isize::MAX, isize::MIN, isize::MAX, isize::MIN),
|
||||
|(min_x, max_x, min_y, max_y), (x, y)| {
|
||||
(min_x.min(*x), max_x.max(*x), min_y.min(*y), max_y.max(*y))
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
fn enhance(&self, algo: &[bool]) -> Image {
|
||||
let (min_x, max_x, min_y, max_y) = self.extents();
|
||||
let mut new_im = HashSet::new();
|
||||
for y in min_y - 10..=max_y + 10 {
|
||||
for x in min_x - 10..=max_x + 10 {
|
||||
let idx = self.lookup(x, y, algo);
|
||||
if algo[idx] {
|
||||
new_im.insert((x, y));
|
||||
}
|
||||
}
|
||||
}
|
||||
Image(new_im)
|
||||
}
|
||||
|
||||
fn lights(&self) -> usize {
|
||||
self.0.len()
|
||||
}
|
||||
fn crop(&self, min_x: isize, max_x: isize, min_y: isize, max_y: isize) -> Image {
|
||||
let x_rng = min_x..=max_x;
|
||||
let y_rng = min_y..=max_y;
|
||||
Image(
|
||||
self.0
|
||||
.iter()
|
||||
.filter(|(x, y)| x_rng.contains(x) && y_rng.contains(y))
|
||||
.cloned()
|
||||
.collect(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl Debug for Image {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error> {
|
||||
let (min_x, max_x, min_y, max_y) = self.extents();
|
||||
writeln!(f, "({}..{})x({}..{})", min_x, max_x, min_y, max_y)?;
|
||||
for y in min_y..=max_y {
|
||||
for x in min_x..=max_x {
|
||||
if self.0.contains(&(x, y)) {
|
||||
write!(f, "#")?;
|
||||
} else {
|
||||
write!(f, ".")?;
|
||||
}
|
||||
}
|
||||
writeln!(f)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[aoc(day20, part1)]
|
||||
fn part1(input: &str) -> Result<usize> {
|
||||
let (algo, im) = input.split_once("\n\n").unwrap();
|
||||
let im = Image::new(im);
|
||||
let algo: Vec<bool> = algo.as_bytes().iter().map(|c| c == &b'#').collect();
|
||||
|
||||
let (min_x, max_x, min_y, max_y) = im.extents();
|
||||
|
||||
dbg!(&im, im.lights());
|
||||
let im = im.enhance(&algo);
|
||||
dbg!(&im, im.lights());
|
||||
let im = im.enhance(&algo);
|
||||
dbg!(&im, im.lights());
|
||||
let im = im.crop(min_x - 2, max_x + 2, min_y - 2, max_y + 2);
|
||||
dbg!(&im, im.lights());
|
||||
let answer = im.lights();
|
||||
assert!(answer < 5285);
|
||||
Ok(answer)
|
||||
}
|
||||
|
||||
/*
|
||||
#[aoc(day20, part2)]
|
||||
fn part2(input: &str) -> Result<usize> {
|
||||
todo!("part2");
|
||||
Ok(0)
|
||||
}
|
||||
*/
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn lookup() -> Result<()> {
|
||||
let input = r#"
|
||||
..#.#..#####.#.#.#.###.##.....###.##.#..###.####..#####..#....#..#..##..###..######.###...####..#..#####..##..#.#####...##.#.#..#.##..#.#......#.###.######.###.####...#.##.##..#..#..#####.....#.#....###..#.##......#.....#..#..#..##..#...##.######.####.####.#.#...#.......#..#.#.#...####.##.#......#..#...##.#.##..#...##.#.##..###.#......#.#.......#.#.#.####.###.##...#.....####.#..#..#.##.#....##..#.####....##...##..#...#......#.#.......#.......##..####..#...#.#.#...##..#.#..###..#####........#..####......#..#
|
||||
|
||||
#..#.
|
||||
#....
|
||||
##..#
|
||||
..#..
|
||||
..###
|
||||
"#
|
||||
.trim();
|
||||
let (algo, im) = input.split_once("\n\n").unwrap();
|
||||
let im = Image::new(im);
|
||||
let algo: Vec<bool> = algo.as_bytes().iter().map(|c| c == &b'#').collect();
|
||||
assert_eq!(im.lookup(2, 2, &algo), 34);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_part1() -> Result<()> {
|
||||
let input = r#"
|
||||
..#.#..#####.#.#.#.###.##.....###.##.#..###.####..#####..#....#..#..##..###..######.###...####..#..#####..##..#.#####...##.#.#..#.##..#.#......#.###.######.###.####...#.##.##..#..#..#####.....#.#....###..#.##......#.....#..#..#..##..#...##.######.####.####.#.#...#.......#..#.#.#...####.##.#......#..#...##.#.##..#...##.#.##..###.#......#.#.......#.#.#.####.###.##...#.....####.#..#..#.##.#....##..#.####....##...##..#...#......#.#.......#.......##..####..#...#.#.#...##..#.#..###..#####........#..####......#..#
|
||||
|
||||
#..#.
|
||||
#....
|
||||
##..#
|
||||
..#..
|
||||
..###
|
||||
"#
|
||||
.trim();
|
||||
assert_eq!(part1(input)?, 35);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/*
|
||||
#[test]
|
||||
fn test_part2()->Result<()> {
|
||||
let input = r#"
|
||||
"#
|
||||
.trim();
|
||||
assert_eq!(part2(input)?, usize::MAX);
|
||||
Ok(())
|
||||
}
|
||||
*/
|
||||
}
|
||||
@ -7,8 +7,9 @@ pub mod day13;
|
||||
pub mod day15;
|
||||
pub mod day16;
|
||||
pub mod day17;
|
||||
pub mod day18;
|
||||
//pub mod day18;
|
||||
pub mod day2;
|
||||
pub mod day20;
|
||||
pub mod day3;
|
||||
pub mod day4;
|
||||
pub mod day5;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user