solutions for day 16, 17, 18 19, 20
This commit is contained in:
parent
9b26d17786
commit
028097d209
1
data/day_16.txt
Normal file
1
data/day_16.txt
Normal file
@ -0,0 +1 @@
|
||||
020D78804D397973DB5B934D9280CC9F43080286957D9F60923592619D3230047C0109763976295356007365B37539ADE687F333EA8469200B666F5DC84E80232FC2C91B8490041332EB4006C4759775933530052C0119FAA7CB6ED57B9BBFBDC153004B0024299B490E537AFE3DA069EC507800370980F96F924A4F1E0495F691259198031C95AEF587B85B254F49C27AA2640082490F4B0F9802B2CFDA0094D5FB5D626E32B16D300565398DC6AFF600A080371BA12C1900042A37C398490F67BDDB131802928F5A009080351DA1FC441006A3C46C82020084FC1BE07CEA298029A008CCF08E5ED4689FD73BAA4510C009981C20056E2E4FAACA36000A10600D45A8750CC8010989716A299002171E634439200B47001009C749C7591BD7D0431002A4A73029866200F1277D7D8570043123A976AD72FFBD9CC80501A00AE677F5A43D8DB54D5FDECB7C8DEB0C77F8683005FC0109FCE7C89252E72693370545007A29C5B832E017CFF3E6B262126E7298FA1CC4A072E0054F5FBECC06671FE7D2C802359B56A0040245924585400F40313580B9B10031C00A500354009100300081D50028C00C1002C005BA300204008200FB50033F70028001FE60053A7E93957E1D09940209B7195A56BCC75AE7F18D46E273882402CCD006A600084C1D8ED0E8401D8A90BE12CCF2F4C4ADA602013BC401B8C11360880021B1361E4511007609C7B8CA8002DC32200F3AC01698EE2FF8A2C95B42F2DBAEB48A401BC5802737F8460C537F8460CF3D953100625C5A7D766E9CB7A39D8820082F29A9C9C244D6529C589F8C693EA5CD0218043382126492AD732924022CE006AE200DC248471D00010986D17A3547F200CA340149EDC4F67B71399BAEF2A64024B78028200FC778311CC40188AF0DA194CF743CC014E4D5A5AFBB4A4F30C9AC435004E662BB3EF0
|
1
data/day_17.txt
Normal file
1
data/day_17.txt
Normal file
@ -0,0 +1 @@
|
||||
target area: x=156..202, y=-110..-69
|
100
data/day_18.txt
Normal file
100
data/day_18.txt
Normal file
@ -0,0 +1,100 @@
|
||||
[[[[4,9],[1,7]],[9,8]],[[7,9],[7,9]]]
|
||||
[[[1,[1,5]],9],[[[8,0],[8,8]],[[7,2],[4,6]]]]
|
||||
[[3,7],[[7,[4,6]],[[8,0],[7,8]]]]
|
||||
[[[[0,1],2],4],[[9,[2,8]],7]]
|
||||
[[[[9,0],9],7],[[1,0],8]]
|
||||
[[4,[[1,2],1]],1]
|
||||
[[[[6,1],[0,2]],[[2,3],4]],[[9,1],8]]
|
||||
[[[5,9],[1,0]],[[7,0],3]]
|
||||
[[9,1],[[4,7],[5,[8,6]]]]
|
||||
[[5,[[3,2],[1,9]]],[[[3,8],9],3]]
|
||||
[[0,[[5,6],2]],9]
|
||||
[6,[2,[[4,2],6]]]
|
||||
[[[[8,2],[9,1]],[9,1]],7]
|
||||
[9,1]
|
||||
[[[[9,8],[5,3]],5],[[6,9],[9,[6,8]]]]
|
||||
[0,[[2,[2,5]],2]]
|
||||
[[2,6],[[[2,8],1],[[0,2],[0,7]]]]
|
||||
[[[[7,8],[8,5]],[[3,2],[4,0]]],[2,[[1,0],[2,6]]]]
|
||||
[[[7,[7,0]],[[1,9],9]],7]
|
||||
[[[[5,1],[0,9]],4],[[0,[9,7]],[8,[6,8]]]]
|
||||
[[8,2],[2,[6,0]]]
|
||||
[[2,6],[[[4,0],6],2]]
|
||||
[[9,[7,[0,1]]],8]
|
||||
[[[[3,8],[4,3]],[7,[0,6]]],[[[5,5],[0,4]],[[8,2],0]]]
|
||||
[[[[9,1],[9,3]],[1,[0,1]]],[[[9,6],8],[9,6]]]
|
||||
[[[[2,3],[7,1]],[[6,8],6]],[[[6,0],0],0]]
|
||||
[[7,[[5,0],4]],[[[8,8],[6,2]],[8,2]]]
|
||||
[[[0,[3,8]],[[0,0],[6,1]]],[[4,5],[[3,9],[5,8]]]]
|
||||
[4,[[1,[9,6]],[8,2]]]
|
||||
[[9,[[9,2],3]],[[[5,6],2],[1,[0,9]]]]
|
||||
[[9,9],[[0,[9,6]],[[8,6],3]]]
|
||||
[[4,[[8,3],2]],[[[9,9],9],[2,[2,0]]]]
|
||||
[[[[7,3],[4,2]],7],[4,6]]
|
||||
[[[2,6],[[4,0],[0,8]]],[[5,0],[3,5]]]
|
||||
[[[[9,3],[0,3]],[[0,0],[1,1]]],[3,[[8,4],[8,6]]]]
|
||||
[[[[3,6],8],1],[[4,[4,1]],[[5,1],[3,0]]]]
|
||||
[[[[8,1],[2,0]],[5,[2,1]]],[[9,[0,0]],[[7,2],[1,0]]]]
|
||||
[[[6,6],[2,3]],[[7,6],[[9,8],2]]]
|
||||
[[[0,9],3],[[[9,5],5],[[6,8],[0,4]]]]
|
||||
[[[0,3],9],[5,[5,[0,5]]]]
|
||||
[[0,[[9,1],4]],[2,4]]
|
||||
[[[9,7],[0,[7,8]]],[[[3,3],5],[[0,9],[1,5]]]]
|
||||
[[0,[[8,0],[5,2]]],[[[1,8],[1,2]],[3,8]]]
|
||||
[5,[0,[[9,8],9]]]
|
||||
[[6,[[9,2],[3,5]]],[[[2,3],9],3]]
|
||||
[1,[1,1]]
|
||||
[[6,[[0,0],1]],[[7,[4,9]],7]]
|
||||
[[3,[[3,5],3]],[[[9,9],6],[[5,0],8]]]
|
||||
[1,5]
|
||||
[[0,4],[8,7]]
|
||||
[[7,[[9,2],1]],5]
|
||||
[[[[6,8],[6,5]],0],4]
|
||||
[[[4,1],[9,0]],[[[4,3],6],[5,9]]]
|
||||
[[8,[[1,9],[5,4]]],[[[9,0],4],[5,5]]]
|
||||
[[0,9],[[[5,5],[7,7]],6]]
|
||||
[[8,[8,5]],[8,[2,6]]]
|
||||
[[[[8,4],4],0],[[3,[2,6]],[6,6]]]
|
||||
[[5,[[5,2],6]],[[[2,3],[5,0]],[[2,9],0]]]
|
||||
[[[[5,9],6],[[8,9],[5,7]]],[0,[8,[2,5]]]]
|
||||
[[[[9,0],7],1],2]
|
||||
[[[9,3],6],[[[6,6],[9,6]],1]]
|
||||
[[[2,0],[0,[4,6]]],[[[5,7],6],[9,5]]]
|
||||
[[[3,[4,3]],8],[[[6,3],[0,5]],2]]
|
||||
[[[[2,8],8],[5,[2,4]]],[[3,7],[2,1]]]
|
||||
[[1,[[2,7],4]],7]
|
||||
[[2,[4,[5,9]]],[[[7,0],6],[4,[9,1]]]]
|
||||
[[[9,[3,5]],[[9,5],[5,2]]],[[2,[4,3]],[[0,5],[1,9]]]]
|
||||
[[1,[9,0]],[[[0,9],[9,3]],0]]
|
||||
[[[[7,8],[3,6]],3],[[[2,6],[2,9]],[[1,3],[1,3]]]]
|
||||
[[[7,[1,4]],[4,7]],[[[0,7],[0,6]],5]]
|
||||
[[[6,0],[3,[2,3]]],6]
|
||||
[[0,[3,[1,3]]],[[2,3],9]]
|
||||
[[[8,6],[0,2]],[[[8,9],[7,0]],9]]
|
||||
[[[[4,9],6],2],[[[8,9],[1,5]],[9,3]]]
|
||||
[[[1,5],[6,[2,7]]],[7,[1,7]]]
|
||||
[5,[3,[9,1]]]
|
||||
[[[7,5],[1,5]],1]
|
||||
[2,[[[5,0],[4,0]],[[3,7],5]]]
|
||||
[[[5,9],1],[[[3,9],4],6]]
|
||||
[[3,[[5,2],[9,2]]],[4,[[3,6],[8,9]]]]
|
||||
[[[5,4],[8,8]],1]
|
||||
[[[[8,9],[5,8]],0],[[9,5],[6,[7,1]]]]
|
||||
[[[4,[8,8]],[[9,5],4]],3]
|
||||
[[6,[6,[4,3]]],[[7,[3,9]],[4,8]]]
|
||||
[[5,[[4,2],[7,3]]],[[[9,0],[0,1]],[[5,8],0]]]
|
||||
[[[[6,1],6],[9,[0,8]]],[9,9]]
|
||||
[[4,0],[[[1,4],4],[4,4]]]
|
||||
[[7,[[0,0],[1,6]]],7]
|
||||
[[6,3],[5,[[2,7],5]]]
|
||||
[[1,[7,5]],[0,[4,1]]]
|
||||
[[[3,7],3],[[3,[0,2]],2]]
|
||||
[[[0,8],[[7,0],[9,8]]],[[[0,3],4],[[6,0],6]]]
|
||||
[[[[4,6],[1,7]],[[6,4],[1,5]]],[3,[9,9]]]
|
||||
[[[2,[1,7]],[9,9]],[[0,[7,8]],[0,[9,6]]]]
|
||||
[[9,8],[5,[6,[1,8]]]]
|
||||
[[[7,2],[[0,6],[2,6]]],[[9,[0,4]],[9,[5,8]]]]
|
||||
[[[8,[6,8]],[[5,5],[9,9]]],[[[2,0],6],[8,1]]]
|
||||
[[[[0,8],4],[3,4]],[[0,[0,8]],[[7,5],2]]]
|
||||
[7,[[[3,4],[5,4]],8]]
|
||||
[[[2,8],[0,2]],6]
|
136
data/day_19.txt
Normal file
136
data/day_19.txt
Normal file
@ -0,0 +1,136 @@
|
||||
--- scanner 0 ---
|
||||
404,-588,-901
|
||||
528,-643,409
|
||||
-838,591,734
|
||||
390,-675,-793
|
||||
-537,-823,-458
|
||||
-485,-357,347
|
||||
-345,-311,381
|
||||
-661,-816,-575
|
||||
-876,649,763
|
||||
-618,-824,-621
|
||||
553,345,-567
|
||||
474,580,667
|
||||
-447,-329,318
|
||||
-584,868,-557
|
||||
544,-627,-890
|
||||
564,392,-477
|
||||
455,729,728
|
||||
-892,524,684
|
||||
-689,845,-530
|
||||
423,-701,434
|
||||
7,-33,-71
|
||||
630,319,-379
|
||||
443,580,662
|
||||
-789,900,-551
|
||||
459,-707,401
|
||||
|
||||
--- scanner 1 ---
|
||||
686,422,578
|
||||
605,423,415
|
||||
515,917,-361
|
||||
-336,658,858
|
||||
95,138,22
|
||||
-476,619,847
|
||||
-340,-569,-846
|
||||
567,-361,727
|
||||
-460,603,-452
|
||||
669,-402,600
|
||||
729,430,532
|
||||
-500,-761,534
|
||||
-322,571,750
|
||||
-466,-666,-811
|
||||
-429,-592,574
|
||||
-355,545,-477
|
||||
703,-491,-529
|
||||
-328,-685,520
|
||||
413,935,-424
|
||||
-391,539,-444
|
||||
586,-435,557
|
||||
-364,-763,-893
|
||||
807,-499,-711
|
||||
755,-354,-619
|
||||
553,889,-390
|
||||
|
||||
--- scanner 2 ---
|
||||
649,640,665
|
||||
682,-795,504
|
||||
-784,533,-524
|
||||
-644,584,-595
|
||||
-588,-843,648
|
||||
-30,6,44
|
||||
-674,560,763
|
||||
500,723,-460
|
||||
609,671,-379
|
||||
-555,-800,653
|
||||
-675,-892,-343
|
||||
697,-426,-610
|
||||
578,704,681
|
||||
493,664,-388
|
||||
-671,-858,530
|
||||
-667,343,800
|
||||
571,-461,-707
|
||||
-138,-166,112
|
||||
-889,563,-600
|
||||
646,-828,498
|
||||
640,759,510
|
||||
-630,509,768
|
||||
-681,-892,-333
|
||||
673,-379,-804
|
||||
-742,-814,-386
|
||||
577,-820,562
|
||||
|
||||
--- scanner 3 ---
|
||||
-589,542,597
|
||||
605,-692,669
|
||||
-500,565,-823
|
||||
-660,373,557
|
||||
-458,-679,-417
|
||||
-488,449,543
|
||||
-626,468,-788
|
||||
338,-750,-386
|
||||
528,-832,-391
|
||||
562,-778,733
|
||||
-938,-730,414
|
||||
543,643,-506
|
||||
-524,371,-870
|
||||
407,773,750
|
||||
-104,29,83
|
||||
378,-903,-323
|
||||
-778,-728,485
|
||||
426,699,580
|
||||
-438,-605,-362
|
||||
-469,-447,-387
|
||||
509,732,623
|
||||
647,635,-688
|
||||
-868,-804,481
|
||||
614,-800,639
|
||||
595,780,-596
|
||||
|
||||
--- scanner 4 ---
|
||||
727,592,562
|
||||
-293,-554,779
|
||||
441,611,-461
|
||||
-714,465,-776
|
||||
-743,427,-804
|
||||
-660,-479,-426
|
||||
832,-632,460
|
||||
927,-485,-438
|
||||
408,393,-506
|
||||
466,436,-512
|
||||
110,16,151
|
||||
-258,-428,682
|
||||
-393,719,612
|
||||
-211,-452,876
|
||||
808,-476,-593
|
||||
-575,615,604
|
||||
-485,667,467
|
||||
-680,325,-822
|
||||
-627,-443,-432
|
||||
872,-547,-609
|
||||
833,512,582
|
||||
807,604,487
|
||||
839,-516,451
|
||||
891,-625,532
|
||||
-652,-548,-490
|
||||
30,-46,-14
|
102
data/day_20.txt
Normal file
102
data/day_20.txt
Normal file
@ -0,0 +1,102 @@
|
||||
##..#.#...##.####..#..###.#.#.#.#.####.#.##.....#####.##..#..#.#.##.......##.##.#.#...#....#.####..#.##.##....###..##.#####.##....##.#.#.#.#....####...##.#......#.#..##......##..#..###.#..####.###...##.#.##.#..##.##..#.#.#..###..##.####.#.#.#..#.##...#..##...##.#####..##.##..#...#..###.#.#...#..#..##...#.#..........#...#...#.#.#.#..#.###..##....####..#######.##.#.....#.#.###...##...###...#.##.##.##..#......#.###...#.#.#.#...##.#.#.##.#..###.#...##...##.......####.##..#.#....#.#####..#..#####.#.....#....#.#.
|
||||
|
||||
.##.#...##..##.#..........#####..#.##..######.##..#....#..#####.#.#####.#..#...#..#####..#.......##.
|
||||
.#.#.#.#####..##.#.###..#.##.##.......#.####.#............#.#....####..#.#####.##.##.#.###..#..##...
|
||||
.##.#.#...##....#.#..#...........##.#.#..#####...#..##.###..##.###..........#####..##..##.#.####....
|
||||
##..####.####.###.......#....#.#####.##...#....###...##...###...#...##..####....####..#####..##..###
|
||||
...###.##.....#......###.#.###..#..###...#.#..#.#######.##..#..#..#..##.##..#####.#####.###...#.###.
|
||||
##.###.#....##..####.#..#.###.##.#.##..#...#...###.###.#..#..#.#.###.##.#..###.#.###....###.###.....
|
||||
#.#.##..#.....#.....##....######...#........#.#.#.#.######..#...##.#.######...#.##########..#.###..#
|
||||
.##.#...##.#......###..####.##.#...#..##.#.####...##..####..#####..##.###.#.###...#.#.######.#.#####
|
||||
..#..##..#.#.#...####..###.#..#...#..#.#.#.#.###..####.#...#......#..#..####.#...#.#.#......#...#..#
|
||||
#...###..#.#.###.#.##.##.#.#.#####....#....#.....#####...#..#..#.#####..##.....#..###.#..###.#..#...
|
||||
..##.#.#..##.#.#...#...#.#.#..#.#.##....#####....#.##...#..#..#.#....###...##..#.#.##.##.#.......#.#
|
||||
##.##.#######.###.#..#....#..##..#.###.....#.###..#.#..#....#.#..###.##.#.....#.#.#.##.#...#..##.#..
|
||||
.....#.#.#.#.####.#..####.#....##.###.###...########.#.#....#..##.#.#####...##....##....#.......#.#.
|
||||
##..#...#..#.#.####..#.#..####.#####.#####.###..#.#####.#..#...##.######.###.#..#.##.#.#..#..#.####.
|
||||
#.##.##.#.####...#.#.#.#..####.#.#...###...#.#....##...####.#..#####.#.####.#..#.....###.#..#...#.#.
|
||||
.#..#.##...####...##.####...###..####.##........#.#.##..#..#.##...#....##.#.#..#.#.###...##.......#.
|
||||
..#..#..#.###.##...###....#.#..#..##..#...###.###...#..#.....#..#.####.#.#.#.##..###...#....##.#.###
|
||||
###.##....##.#.##..####.#.###...###.###.#####..##.###.....#.#####....#.##..##.#####.##..###....#....
|
||||
###..#...###..#....#..#.#...#....###.#.####.##..#.#..#.###..#..#.##.#.#.......#...#....#...###..#.##
|
||||
#...#.#.#...#.####.##.#.#..#...##.....#..##....#..#.##..##.####.#.#.###..##..#.#.#.###.#.#..####..##
|
||||
.###..###.##..###..#..#.##..#...#.##.#.......####.#..##.#...#.##..#..........##..####..##.###..###..
|
||||
###.#.#...###..#...#####.####..#..#######.#.#.###.##.###.#.####.##.#####..###.#####.#...####.##..##.
|
||||
.##..##..##.#...######.###...#.##.##....##.#...##.#####.#...##..#.#...#.#..#.##.#....##.####.#.##.#.
|
||||
...####..#...#...####.#.#...#...###..#.##...####.#..######.##.....##..#...#...####.###.#..##.##..#..
|
||||
#.#####.##.##..#..##.#.####..##.#.#...#..####.##..###.####.##.##...#.#...#.#.#####.####.#.###..#..#.
|
||||
..#.....#..##..#...#####..##.###..##.#..##..##..####.#..#.####.###...#####.#.###.....#..#.####.#.##.
|
||||
#####....###..##.#.######.#.##..##.#.#####.##########.#...##...###....###.#.....#.....###.#.#.#.##.#
|
||||
##.....#.###.###.#.##.########....##.##.###...#######..##..#.#.#..#.##..####..#.###.#.###.#.#......#
|
||||
..##..#...#.#.#.#.###.#..#####.#.#..#......####..#.###..###...##...##.##..#..#..#.##.#..###..##.#.#.
|
||||
.#.#..#..###.##.#.#...#.#...##...#.###..#.#.##.#....#..####..#.#.##.#..#...##.#.....##...####.....#.
|
||||
##.#..##...#..##.####.##....##..#####.###...#..######..#....#..#######..#..#.####.#...##.##..##..#..
|
||||
..##.#.###....#..#.....#..#.#.#.#........#..##.#.#.......####.##...#.#.##.######..##..#....#.#......
|
||||
.....#....#.#.##...#..######.###.###.##....##.#.##.###.....#..#.#....#####.#..##.#.....#..#.##....##
|
||||
##.....#.#...####...##.##.#.##.#.##......#.#########.#.##..##...###.##.#..#....#..##.####..#######..
|
||||
##...#.########.###.#....#...#..##.##.###....##...#####..##.####..##..#..#####.#..######.####...#.#.
|
||||
##.####..##.#####..#..###...##.......#...#.###.#.#..#..#....#.#..##.....#.#....####.###...#.#..##.#.
|
||||
#.#.#.#.###..#.#####.#...##...#.###.##..#.#####.....#...#.#.#..#...##....#...####.####.##.#.....####
|
||||
..###.##.#......#######..#...##..###.##....#....#.#..###...#..###.#.#...#..##...####.###.###..#.#.##
|
||||
.#..#.#.##..###########.#.#..#.###.######...###.##..#.###..##.#...#.#...###.#.##.##.#..#..#..#.#...#
|
||||
.#..#.#..##....#....####.#..##....#.###.####..#.##.#.#..###.#.##.#........##.#...###.#.......##.#...
|
||||
...###.#.#.##.##.##.....#.#.#..#..#.##.#######...##....#.#......##....##.#.####.####.###.#....##..#.
|
||||
.#.##..#.##.##.####.....##...#..###.###.###..#..##.####..##...#.###.##..##..#####.#..###....###.##.#
|
||||
#.###...#####.#..#.####...##.#..#...######.....#.#....##.#.#...##....#...........##.##.##.#...######
|
||||
##..#..##.....##..#.#..##.##.#..#...####.######.......###..#..##.##..##..##..###..##.##.#.#.....#...
|
||||
#......###..#####..#######.#.#..#.###..##.#..##.##.##.#..###.###..##.##.....#.#..####.#.##...##..###
|
||||
.##...#..###..##..#.#####.#####.###...#.........#.##.##.###.#.#.#...###.#..###.##.##.#..#..#...###.#
|
||||
#.###.###.###.#.###.#.##....##..##.......#....##.###.###.#.###..#..###.#.##.##..#.#...######.####..#
|
||||
..#####.###.##.#..##.##.#..#.###..#.####....#...##.#.......#.#..##.#.......##.##.#######...######.##
|
||||
#.##...###..#..##.....#.#.##.#..##...##.#####..#...##...#..#.####.#.##.##.#....##.###.#.##..##..#.#.
|
||||
..#.###.#.##...#..##.#..####.###..#####.##.####.#.##..####.###..##..#...#.##...#.###....####...####.
|
||||
.###.....###.#....######.#####..#..#..#.#.#..#..#.###.#........##.###...#...##..#..#...#.....#.###.#
|
||||
..###.##.#.#####.#..########..##..##.#..###.#.##.#....#.###........#....#...#.#...##.#.##..#..##.##.
|
||||
###.#.#.#...#..##....#.##....##.#######.#.##.#.##....#....###.#.#.....#.##..###..##..#..##..#.#..##.
|
||||
.#.##..#.##..##.##.##..#.###.#..##.###.#.###.##......##.#...##.##..##...##.#...##.#..#..#.##..#.##..
|
||||
####..####.###..#..#####...###.#....###.#...##........#.#...#..#.#.###..####.#.#.######...#..##.#.#.
|
||||
#...#..#.##..#.#.#.#.#...##.#.##..#...#.###.###.#....##.#..##.#.###..##....#.###.#.##..#..##....#...
|
||||
#.###.#.##.###.#..#...####.#....#..#.#####.#...#.###.##.##.###.###..#...#.#.####..###..........##.#.
|
||||
##.##.#.###.#.##.####...###.#.###..###...####..#####.###...#.##...###.##..#.####.#.##...#....##.#.##
|
||||
#....#..##.##.##......##...##.##..#####...#.##.###.##...##..##..###..#..#..#...###.##.#..#..#.#...##
|
||||
###.####.....#.#....####..#.##.........#....##.....#....##.#..##.##..####..###.####.#...##....##.##.
|
||||
#.......###.#..####.##..#..##...#....###...##.......##.....###.######.#..#..##..#....#.###.#..##.###
|
||||
#.###.##..##..##.##...#.........####..####..#..##...##.#..#..#######.###...#......#.##.####.#..##...
|
||||
#.####...##.#...#.#.###...##...#....#.##.##.####.#.#....###....#...#........##.##..#.#.####..#.#.#..
|
||||
.#..###.#..#.....##..#..#.###..###.#.##...#.#.....#...#....#.##.#..#.#...#..#.#..###..#.#...###.....
|
||||
.####....####....#.#.....#..#.#.##........#..#.####.##.##...#.#.####.#..#.##..##..#...#.#.##...#.#.#
|
||||
#####.#...####.#.####.#...#..#...#.#.##.#..#...##..#.#...##.###.##.#.###.###.#...#..#.###.##.##...#.
|
||||
#.#....#.###.##..##.##..##.#...#.###....###....###..#.####.###..#.#.##...#..####....#.####...###.#..
|
||||
.#...#.###.#.####..#.#####...##...#..##........#....#..#.#.##..##.##.#######.#.#.#.##.#.#.#.##..#...
|
||||
#....#....#.#.##.##.##..###..###.##..#.##.....###.###......#.#....#..#.##......#.###.#..#.#.#.#..###
|
||||
#####.#####.##...#.#..#..##.####.#......######..####..##.##.##.#.......#...####..#..###.#..##.#.#.#.
|
||||
#.##...##..##......###...#.#.##...#.#...#..##.###.#..#.##...#.#.#.##.###.##.#####....#...#.....##..#
|
||||
..##....##..#..##..##...#..#.##.####.##........###..##.##.#.#.##..#..###...#..#...##.#.##.########.#
|
||||
#...#.#####.###.#....#....#######.###..#..#.#..##..#.###.#.####.##.#..###..#....###.###....###.#..##
|
||||
.......###.#.#.#..#.#..###...#.##..#..#...#..#....#..#...#.#####.#...##.#.###.###.#..#.##.#..##.....
|
||||
....#.##...#.##.#.###..#####..#.######.###...###..##.#.#.##.###.##.####..#..#.....#.......#.######.#
|
||||
##..####......##...##.#..#..#..#..##.#.#..##..####.#.######.#...##..#..#.##.##..###..#..#.#..#..#...
|
||||
.##.#..#..##.#.##..#..#.#.#...##.##...##.#.########..##..#...#####.....#.#..###.#.##.##.###..#..#.##
|
||||
..##...#.#..#.#.##.###..#....#..###...#..##....##.#..######..###.#.#####..#.###.##.###..#####...####
|
||||
#.#..###.##.#...#..###..#.##.##...####.####.#.....##....###..#..#...####.####.###...#..#.#.#.#.##..#
|
||||
###..##...#.#..##..#...##..###.#.....#...##.###.#..###...###.####..###.#..#.#...##.....#............
|
||||
.#####..##...##....######...#..###.#.#......#...######.#..#...###.#...#..####.#......##..#..#.#...#.
|
||||
.#..####.#.#..###..#.#.##.####..#.#....#.####..##...#..#.#.#..###.........##.#.#####...###...#.#..#.
|
||||
.#.#....#..####..##..#########.#..#.##..###..#..#...###....##.....####...#..#.##....#######.####.##.
|
||||
##.#.####..#...#..#.##.#..#....##.####..####..###.#.#...#######.#.###..###.###..#.###.##...##.##..#.
|
||||
.#####.....##.#....##...##...#.#..####.##..#....##.###.#####.##.#.#.#...#...#.#.#.......##..##.##.#.
|
||||
.##..#.#.###.#.#.#....##.#...#....#...#...#..#######....##.#.#.#####.#.###..#..#...#......#..#.##..#
|
||||
...##.....#..#.####.###...#####.#.#....##.#.#.#.#...####.####.#..##.#.##.##.###..##...##.....#...###
|
||||
####.###..###.####..###.##..#.#####.#...##.#..#.#.##.####.#..####..#..##....####.#....#...#.####.#.#
|
||||
##....##.#.#.##.###..#####.##..##..#..##..##..#.#..###.##.#####...#..#.##.#.####.####..#...##..#..##
|
||||
#.#..###..##..#..#..####..#..#.#..#.##...###.#.#.#.#...####.#.#...####.##..#.#.#..#.##..##..##.#....
|
||||
##.#.####....##..##..####.#######..##....######.##.#....#..#...#.#..#.##.#...#.#.#.#.#..###....#.#.#
|
||||
.##.###..#.###..##...####.###.#.##.###.#...#..#......######.##.##.##.####.##.##....#.#......####.#.#
|
||||
#..###.####.#...#.###.###.#..##.###..#.#.#####..#.##.##.#.##.##..###.####...####..#..###...#.##.####
|
||||
#...............#.##.###...#..#..#.##.##.#.##.#.#...#.#....#..#.######..#..#..##....#.##..#..#..#.##
|
||||
###.###...#...#..#....##.......#.#..#...##...#....#..######..#.....##.####..#....#...##...######..##
|
||||
..##..#..##.#.##..###.#...............####...##..##......#...#.....#..#....#.#...#.....##..#####..##
|
||||
#.....##.#.##.###......###.#.##..###....###..#...#..###.#..#..##...#..#.##...#.#...#..#.....##...#.#
|
||||
..##....#..#.#.#.####..#.#.#....#.#.#.#.##.#..#.#..#..#.#.##.####......##..#...##..#.#.##..#.....#..
|
||||
.#..##....###.###..##....#####.#....####....#.#.##..#...#.###.##..#.....##........###.###.####..#.#.
|
||||
.###.##..#..#...#.#.#######.##.#.#.#.#.###.#.#.#.#......#####.###.#.#.#......#.#..#.#.##..#.##.#.#.#
|
73
src/day_16.jl
Normal file
73
src/day_16.jl
Normal file
@ -0,0 +1,73 @@
|
||||
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
|
||||
import .Aoc: @aoc
|
||||
using Pipe: @pipe
|
||||
|
||||
|
||||
function decode_packet(p, o, version)
|
||||
version += parse(Int, p[o:o+2], base=2); o+=3
|
||||
type = parse(Int, p[o:o+2], base = 2); o+=3
|
||||
|
||||
if type == 4
|
||||
v = ""
|
||||
while true
|
||||
tmp = p[o:o+4]; o+=5
|
||||
v *= tmp[2:end]
|
||||
tmp[1] == '0' ? break : continue
|
||||
end
|
||||
value = parse(Int, v, base=2)
|
||||
else
|
||||
length_type = p[o]; o+=1
|
||||
sub_values = []
|
||||
if length_type == '0'
|
||||
length = parse(Int, p[o:o+14], base=2); o+=15
|
||||
target = o + length
|
||||
while o < target
|
||||
v, o, version = decode_packet(p, o, version)
|
||||
push!(sub_values, v)
|
||||
end
|
||||
else
|
||||
num = parse(Int, p[o:o+10], base=2); o+=11
|
||||
for _ in 1:num
|
||||
v, o, version = decode_packet(p, o, version)
|
||||
push!(sub_values, v)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if type == 0
|
||||
value = sum(sub_values)
|
||||
elseif type == 1
|
||||
value = prod(sub_values)
|
||||
elseif type == 2
|
||||
value = minimum(sub_values)
|
||||
elseif type == 3
|
||||
value = maximum(sub_values)
|
||||
elseif type == 5
|
||||
value = sub_values[begin] > sub_values[end] ? 1 : 0
|
||||
elseif type == 6
|
||||
value = sub_values[begin] < sub_values[end] ? 1 : 0
|
||||
elseif type == 7
|
||||
value = sub_values[begin] == sub_values[end] ? 1 : 0
|
||||
end
|
||||
return (value, o, version)
|
||||
end
|
||||
|
||||
function p1(input::Vector{String})
|
||||
packet = ""
|
||||
for c in input[1]
|
||||
packet *= bitstring(Int8(parse(Int, c, base = 16)))[5:end]
|
||||
end
|
||||
v, _, version = decode_packet(packet, 1, 0)
|
||||
return version
|
||||
end
|
||||
|
||||
function p2(input::Vector{String})
|
||||
packet = ""
|
||||
for c in input[1]
|
||||
packet *= bitstring(Int8(parse(Int, c, base = 16)))[5:end]
|
||||
end
|
||||
v, _ = decode_packet(packet, 1, 0)
|
||||
return v
|
||||
end
|
||||
|
||||
@aoc(2021, 16)
|
38
src/day_17.jl
Normal file
38
src/day_17.jl
Normal file
@ -0,0 +1,38 @@
|
||||
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
|
||||
import .Aoc: @aoc
|
||||
using Pipe: @pipe
|
||||
|
||||
function solve(input)
|
||||
x1, x2, y1, y2 = parse.(Int, match(r"target area: x=(-?\d+)..(-?\d+), y=(-?\d+)..(-?\d+)", input).captures)
|
||||
total = 0
|
||||
best = 0
|
||||
for vx in isqrt(2x1)+1:x2, vy in y1:abs(y1)
|
||||
x,y,maxy = 0,0,0
|
||||
Δx, Δy = vx, vy
|
||||
found = passed = false
|
||||
while true
|
||||
inside = false
|
||||
x += Δx; y += Δy
|
||||
Δx -= sign(Δx); Δy -= 1
|
||||
y > maxy && (maxy = y)
|
||||
if x in x1:x2 && y in y1:y2
|
||||
inside = true
|
||||
!found && (total += 1); found = true
|
||||
maxy > best && (best = maxy)
|
||||
end
|
||||
(found && !inside) && break
|
||||
y < y1 && break
|
||||
end
|
||||
end
|
||||
return (best, total)
|
||||
end
|
||||
|
||||
function p1(input::Vector{String})
|
||||
return solve(input[1])[1]
|
||||
end
|
||||
|
||||
function p2(input::Vector{String})
|
||||
return solve(input[1])[2]
|
||||
end
|
||||
|
||||
@aoc(2021, 17)
|
69
src/day_18.jl
Normal file
69
src/day_18.jl
Normal file
@ -0,0 +1,69 @@
|
||||
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
|
||||
import .Aoc: @aoc
|
||||
using Pipe: @pipe
|
||||
using Combinatorics
|
||||
|
||||
function addn(v, n, dir)
|
||||
n == nothing && (return v)
|
||||
typeof(v) == Int && (return v+n)
|
||||
if dir == "left"
|
||||
return [addn(v[1], n, "left"), v[2]]
|
||||
else
|
||||
return [v[1], addn(v[2], n, "right")]
|
||||
end
|
||||
end
|
||||
|
||||
function arrexplode(v, n = 4)
|
||||
typeof(v) == Int && (return (false, nothing, v, nothing))
|
||||
n == 0 && (return true, v[1], 0, v[2])
|
||||
|
||||
l, r = v
|
||||
exploded, t, l, w = arrexplode(l, n-1)
|
||||
exploded && (return true, t, [l, addn(r, w, "left")], nothing)
|
||||
exploded, t, r, w = arrexplode(r, n-1)
|
||||
exploded && (return true, nothing, [addn(l, t, "right"), r], w)
|
||||
|
||||
false, nothing, v, nothing
|
||||
end
|
||||
|
||||
function arrsplit(v)
|
||||
if typeof(v) == Int
|
||||
v > 9 && (return true, [v ÷ 2, Int(round(v/2, RoundUp))])
|
||||
return false, v
|
||||
end
|
||||
l, r = v
|
||||
changed, l = arrsplit(l)
|
||||
changed && (return true, [l,r])
|
||||
changed, r = arrsplit(r)
|
||||
|
||||
changed, [l,r]
|
||||
end
|
||||
|
||||
function arradd(l, r)
|
||||
sum = [l,r]
|
||||
while true
|
||||
changed, t, sum, w = arrexplode(sum)
|
||||
changed && continue
|
||||
changed, sum = arrsplit(sum)
|
||||
changed && continue
|
||||
break
|
||||
end
|
||||
sum
|
||||
end
|
||||
|
||||
function magn(v)
|
||||
typeof(v) == Int && (return v)
|
||||
3*magn(v[1]) + 2*magn(v[2])
|
||||
end
|
||||
|
||||
function p1(input::Vector{String})
|
||||
numbers = [ eval(Meta.parse(x)) for x in input ]
|
||||
magn(reduce(arradd, numbers))
|
||||
end
|
||||
|
||||
function p2(input::Vector{String})
|
||||
numbers = [ eval(Meta.parse(x)) for x in input ]
|
||||
maximum([magn(arradd(l,r)) for (l, r) in Combinatorics.permutations(numbers, 2)])
|
||||
end
|
||||
|
||||
@aoc(2021, 18)
|
86
src/day_19.jl
Normal file
86
src/day_19.jl
Normal file
@ -0,0 +1,86 @@
|
||||
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
|
||||
import .Aoc: @aoc
|
||||
using Pipe: @pipe
|
||||
using Combinatorics
|
||||
|
||||
function prepare_input(input)
|
||||
dict = []
|
||||
tmp = []
|
||||
for l in input
|
||||
l == "" && continue
|
||||
m = match(r"--- scanner (\d+) ---", l)
|
||||
if m != nothing
|
||||
length(tmp) != 0 && push!(dict, tmp)
|
||||
tmp = []
|
||||
continue
|
||||
end
|
||||
push!(tmp, parse.(Int, split(l, ",")))
|
||||
end
|
||||
dict
|
||||
end
|
||||
|
||||
function align(a,b, negs, distances)
|
||||
a2 = Set(a)
|
||||
for re in 1:6, neg in negs
|
||||
newb = [ neg .* collect(Combinatorics.permutations(s,3))[re] for s in b ]
|
||||
for p1 in a2, p2 in newb
|
||||
count = 0
|
||||
remapped = []
|
||||
dist = p2 .- p1
|
||||
for b2 in newb
|
||||
to_a = b2 .- dist
|
||||
to_a in a2 && (count += 1)
|
||||
push!(remapped, to_a)
|
||||
end
|
||||
if count >= 12
|
||||
println("match $dist")
|
||||
push!(distances, dist)
|
||||
return true, remapped
|
||||
end
|
||||
end
|
||||
end
|
||||
return false, []
|
||||
end
|
||||
|
||||
function p1(input::Vector{String})
|
||||
@info "Something is brken. This may take 5 minutes or more to get a slightly wrong result."
|
||||
negations = [
|
||||
[1,1,1],
|
||||
[-1,1,1],
|
||||
[1,-1,1],
|
||||
[1,1,-1],
|
||||
[-1,-1,1],
|
||||
[-1,1,-1],
|
||||
[-1,-1,-1],
|
||||
[1,-1,-1]
|
||||
]
|
||||
list = prepare_input(input)
|
||||
aligned_idx = Set(1)
|
||||
aligned = Dict(1 => list[1])
|
||||
beacons = copy(list[1])
|
||||
dont_align = Set()
|
||||
distances = [[0,0,0]]
|
||||
while length(aligned_idx) < length(list)
|
||||
for i in 1:length(list)
|
||||
i in aligned_idx && continue
|
||||
for j in sort(collect(aligned_idx))
|
||||
println("checking $i against $j")
|
||||
(i,j) in dont_align && continue
|
||||
found, remapped = align(aligned[j], list[i], negations, distances)
|
||||
if found
|
||||
push!(aligned_idx, i)
|
||||
aligned[i] = remapped
|
||||
beacons = vcat(beacons, remapped)
|
||||
break
|
||||
end
|
||||
push!(dont_align, (i,j))
|
||||
end
|
||||
end
|
||||
end
|
||||
return length(beacons)
|
||||
end
|
||||
|
||||
function p2(input::Vector{String})
|
||||
end
|
||||
|
||||
@aoc(2021, 19)
|
60
src/day_20.jl
Normal file
60
src/day_20.jl
Normal file
@ -0,0 +1,60 @@
|
||||
include(joinpath(readchomp(`git rev-parse --show-toplevel`), "aoc.jl"))
|
||||
import .Aoc: @aoc
|
||||
using Pipe: @pipe
|
||||
|
||||
function prepare_input(input)
|
||||
code = [ (c == '#') for c in input[1] ]
|
||||
image = []
|
||||
|
||||
for l in input[3:end]
|
||||
push!(image, [ (c == '#') for c in l ])
|
||||
end
|
||||
code, image
|
||||
end
|
||||
|
||||
function neighbours(i,j)
|
||||
( (i+y,j+x) for (y, x) in zip([-1,-1,-1,0,0,0,1,1,1], [-1,0,1,-1,0,1,-1,0,1]))
|
||||
end
|
||||
|
||||
function get_value(image, y, x, bool)
|
||||
( 1 <= y <= length(image) && 1 <= x <= length(image[1])) && return image[y][x]
|
||||
bool
|
||||
end
|
||||
|
||||
function apply_alg(image, code, bool)
|
||||
w = length(image[1])
|
||||
h = length(image)
|
||||
newimage = []
|
||||
for y in 0:h+1
|
||||
row = []
|
||||
for x in 0:w+1
|
||||
values = [ get_value(image, y2, x2, bool) for (y2,x2) in neighbours(y, x)]
|
||||
idx = parse(Int, join(map(b->b ? 1 : 0, values)), base=2)
|
||||
push!(row, code[idx+1])
|
||||
end
|
||||
push!(newimage, row)
|
||||
end
|
||||
newimage
|
||||
end
|
||||
|
||||
function p1(input::Vector{String})
|
||||
code, image = prepare_input(input)
|
||||
bool = false
|
||||
for _ in 1:2
|
||||
image = apply_alg(image, code, bool)
|
||||
bool = !bool
|
||||
end
|
||||
return sum(vcat(image...))
|
||||
end
|
||||
|
||||
function p2(input::Vector{String})
|
||||
code, image = prepare_input(input)
|
||||
bool = false
|
||||
for _ in 1:50
|
||||
image = apply_alg(image, code, bool)
|
||||
bool = !bool
|
||||
end
|
||||
return sum(vcat(image...))
|
||||
end
|
||||
|
||||
@aoc(2021, 20)
|
Loading…
x
Reference in New Issue
Block a user