mirror of
https://github.com/Ajetski/advent-of-code.git
synced 2025-09-30 09:33:19 -09:00
add day 13
This commit is contained in:
parent
ad6b1b1c93
commit
ed97d0d863
806
inputs/13.txt
Normal file
806
inputs/13.txt
Normal file
@ -0,0 +1,806 @@
|
|||||||
|
527,872
|
||||||
|
94,740
|
||||||
|
502,586
|
||||||
|
33,514
|
||||||
|
349,784
|
||||||
|
1292,133
|
||||||
|
733,623
|
||||||
|
305,336
|
||||||
|
108,628
|
||||||
|
1086,396
|
||||||
|
845,128
|
||||||
|
674,761
|
||||||
|
768,317
|
||||||
|
783,154
|
||||||
|
731,697
|
||||||
|
803,844
|
||||||
|
865,96
|
||||||
|
1263,567
|
||||||
|
1141,141
|
||||||
|
1218,644
|
||||||
|
1115,429
|
||||||
|
951,373
|
||||||
|
748,326
|
||||||
|
1088,422
|
||||||
|
259,673
|
||||||
|
885,885
|
||||||
|
150,732
|
||||||
|
181,19
|
||||||
|
182,581
|
||||||
|
1130,838
|
||||||
|
647,386
|
||||||
|
53,140
|
||||||
|
27,726
|
||||||
|
1198,105
|
||||||
|
219,476
|
||||||
|
545,779
|
||||||
|
234,528
|
||||||
|
1042,145
|
||||||
|
422,852
|
||||||
|
683,726
|
||||||
|
636,40
|
||||||
|
140,590
|
||||||
|
415,824
|
||||||
|
415,637
|
||||||
|
238,478
|
||||||
|
0,347
|
||||||
|
1277,380
|
||||||
|
1076,366
|
||||||
|
984,112
|
||||||
|
808,787
|
||||||
|
321,480
|
||||||
|
576,707
|
||||||
|
999,810
|
||||||
|
1283,392
|
||||||
|
604,606
|
||||||
|
610,724
|
||||||
|
107,487
|
||||||
|
657,497
|
||||||
|
258,378
|
||||||
|
392,224
|
||||||
|
1044,498
|
||||||
|
53,754
|
||||||
|
706,606
|
||||||
|
1191,753
|
||||||
|
661,256
|
||||||
|
895,637
|
||||||
|
1015,373
|
||||||
|
455,808
|
||||||
|
825,753
|
||||||
|
929,835
|
||||||
|
581,205
|
||||||
|
1236,30
|
||||||
|
343,74
|
||||||
|
207,813
|
||||||
|
547,866
|
||||||
|
1005,558
|
||||||
|
113,420
|
||||||
|
445,4
|
||||||
|
562,326
|
||||||
|
924,593
|
||||||
|
209,621
|
||||||
|
1078,42
|
||||||
|
1265,798
|
||||||
|
923,408
|
||||||
|
1082,808
|
||||||
|
910,889
|
||||||
|
850,408
|
||||||
|
1277,268
|
||||||
|
984,809
|
||||||
|
1191,813
|
||||||
|
295,541
|
||||||
|
108,826
|
||||||
|
705,698
|
||||||
|
97,666
|
||||||
|
878,33
|
||||||
|
1245,240
|
||||||
|
1257,140
|
||||||
|
1001,416
|
||||||
|
252,478
|
||||||
|
139,51
|
||||||
|
75,732
|
||||||
|
925,750
|
||||||
|
388,502
|
||||||
|
721,703
|
||||||
|
509,254
|
||||||
|
808,532
|
||||||
|
478,386
|
||||||
|
349,299
|
||||||
|
328,85
|
||||||
|
463,210
|
||||||
|
254,126
|
||||||
|
835,281
|
||||||
|
895,569
|
||||||
|
850,155
|
||||||
|
513,782
|
||||||
|
195,465
|
||||||
|
1066,155
|
||||||
|
119,529
|
||||||
|
355,826
|
||||||
|
1078,68
|
||||||
|
176,350
|
||||||
|
459,465
|
||||||
|
1077,364
|
||||||
|
47,567
|
||||||
|
674,40
|
||||||
|
169,141
|
||||||
|
119,305
|
||||||
|
541,485
|
||||||
|
1009,642
|
||||||
|
1212,894
|
||||||
|
537,544
|
||||||
|
674,754
|
||||||
|
517,616
|
||||||
|
25,38
|
||||||
|
5,32
|
||||||
|
191,572
|
||||||
|
700,276
|
||||||
|
1004,891
|
||||||
|
492,547
|
||||||
|
701,516
|
||||||
|
65,45
|
||||||
|
319,60
|
||||||
|
1071,325
|
||||||
|
621,575
|
||||||
|
1131,834
|
||||||
|
185,560
|
||||||
|
693,571
|
||||||
|
441,140
|
||||||
|
157,533
|
||||||
|
527,32
|
||||||
|
915,221
|
||||||
|
1212,780
|
||||||
|
1131,501
|
||||||
|
463,684
|
||||||
|
1169,112
|
||||||
|
1299,269
|
||||||
|
832,350
|
||||||
|
555,733
|
||||||
|
1115,476
|
||||||
|
432,422
|
||||||
|
266,310
|
||||||
|
835,393
|
||||||
|
105,277
|
||||||
|
820,499
|
||||||
|
967,820
|
||||||
|
63,894
|
||||||
|
561,754
|
||||||
|
301,642
|
||||||
|
668,233
|
||||||
|
182,600
|
||||||
|
801,640
|
||||||
|
502,532
|
||||||
|
1134,554
|
||||||
|
546,68
|
||||||
|
11,625
|
||||||
|
373,98
|
||||||
|
1082,114
|
||||||
|
654,771
|
||||||
|
763,28
|
||||||
|
92,102
|
||||||
|
713,74
|
||||||
|
869,409
|
||||||
|
855,360
|
||||||
|
1277,864
|
||||||
|
1083,875
|
||||||
|
604,288
|
||||||
|
924,301
|
||||||
|
11,269
|
||||||
|
841,511
|
||||||
|
1037,140
|
||||||
|
868,670
|
||||||
|
759,486
|
||||||
|
604,222
|
||||||
|
917,464
|
||||||
|
1034,512
|
||||||
|
806,126
|
||||||
|
1004,865
|
||||||
|
677,670
|
||||||
|
763,866
|
||||||
|
1305,862
|
||||||
|
681,728
|
||||||
|
1251,408
|
||||||
|
955,390
|
||||||
|
224,119
|
||||||
|
465,598
|
||||||
|
87,773
|
||||||
|
442,670
|
||||||
|
492,558
|
||||||
|
1019,406
|
||||||
|
929,59
|
||||||
|
513,560
|
||||||
|
1146,323
|
||||||
|
947,646
|
||||||
|
305,224
|
||||||
|
656,632
|
||||||
|
952,520
|
||||||
|
639,82
|
||||||
|
1200,99
|
||||||
|
984,206
|
||||||
|
951,93
|
||||||
|
1283,502
|
||||||
|
150,574
|
||||||
|
825,164
|
||||||
|
432,413
|
||||||
|
965,579
|
||||||
|
436,740
|
||||||
|
445,778
|
||||||
|
840,254
|
||||||
|
1310,547
|
||||||
|
93,759
|
||||||
|
299,726
|
||||||
|
761,725
|
||||||
|
793,558
|
||||||
|
1202,826
|
||||||
|
1173,822
|
||||||
|
951,476
|
||||||
|
415,40
|
||||||
|
423,226
|
||||||
|
405,175
|
||||||
|
813,529
|
||||||
|
499,451
|
||||||
|
254,630
|
||||||
|
845,369
|
||||||
|
73,653
|
||||||
|
234,814
|
||||||
|
855,808
|
||||||
|
465,318
|
||||||
|
12,162
|
||||||
|
403,284
|
||||||
|
730,478
|
||||||
|
907,284
|
||||||
|
224,396
|
||||||
|
301,520
|
||||||
|
186,590
|
||||||
|
551,486
|
||||||
|
832,116
|
||||||
|
773,544
|
||||||
|
956,362
|
||||||
|
273,140
|
||||||
|
234,379
|
||||||
|
828,182
|
||||||
|
306,865
|
||||||
|
1193,574
|
||||||
|
176,554
|
||||||
|
1175,810
|
||||||
|
711,617
|
||||||
|
1015,541
|
||||||
|
928,644
|
||||||
|
426,808
|
||||||
|
586,826
|
||||||
|
535,753
|
||||||
|
1173,72
|
||||||
|
301,597
|
||||||
|
311,532
|
||||||
|
233,493
|
||||||
|
838,28
|
||||||
|
174,227
|
||||||
|
219,110
|
||||||
|
597,841
|
||||||
|
884,780
|
||||||
|
271,102
|
||||||
|
65,240
|
||||||
|
354,362
|
||||||
|
932,522
|
||||||
|
652,833
|
||||||
|
720,894
|
||||||
|
895,824
|
||||||
|
371,779
|
||||||
|
957,374
|
||||||
|
293,799
|
||||||
|
169,276
|
||||||
|
791,532
|
||||||
|
580,416
|
||||||
|
711,726
|
||||||
|
408,462
|
||||||
|
239,396
|
||||||
|
1077,135
|
||||||
|
754,360
|
||||||
|
609,322
|
||||||
|
880,119
|
||||||
|
497,500
|
||||||
|
289,323
|
||||||
|
875,784
|
||||||
|
239,817
|
||||||
|
455,154
|
||||||
|
137,72
|
||||||
|
1101,768
|
||||||
|
212,126
|
||||||
|
445,452
|
||||||
|
1029,546
|
||||||
|
108,68
|
||||||
|
610,170
|
||||||
|
579,162
|
||||||
|
295,521
|
||||||
|
1124,369
|
||||||
|
797,334
|
||||||
|
872,347
|
||||||
|
137,822
|
||||||
|
1202,266
|
||||||
|
649,376
|
||||||
|
984,645
|
||||||
|
1280,150
|
||||||
|
102,870
|
||||||
|
485,164
|
||||||
|
435,476
|
||||||
|
924,28
|
||||||
|
1289,819
|
||||||
|
760,525
|
||||||
|
483,3
|
||||||
|
1029,348
|
||||||
|
1255,168
|
||||||
|
276,382
|
||||||
|
808,219
|
||||||
|
108,714
|
||||||
|
1295,596
|
||||||
|
1237,395
|
||||||
|
556,222
|
||||||
|
996,232
|
||||||
|
440,341
|
||||||
|
30,150
|
||||||
|
349,336
|
||||||
|
422,826
|
||||||
|
113,754
|
||||||
|
801,621
|
||||||
|
811,239
|
||||||
|
15,364
|
||||||
|
748,568
|
||||||
|
924,749
|
||||||
|
661,638
|
||||||
|
45,798
|
||||||
|
281,546
|
||||||
|
228,114
|
||||||
|
359,476
|
||||||
|
929,588
|
||||||
|
1119,210
|
||||||
|
470,254
|
||||||
|
415,257
|
||||||
|
70,698
|
||||||
|
649,862
|
||||||
|
999,74
|
||||||
|
711,700
|
||||||
|
381,140
|
||||||
|
1305,704
|
||||||
|
313,467
|
||||||
|
70,366
|
||||||
|
475,393
|
||||||
|
1011,826
|
||||||
|
945,634
|
||||||
|
621,366
|
||||||
|
1191,305
|
||||||
|
288,728
|
||||||
|
346,700
|
||||||
|
513,112
|
||||||
|
863,81
|
||||||
|
883,161
|
||||||
|
229,493
|
||||||
|
507,396
|
||||||
|
383,252
|
||||||
|
579,732
|
||||||
|
309,864
|
||||||
|
324,425
|
||||||
|
1163,501
|
||||||
|
268,145
|
||||||
|
1094,547
|
||||||
|
579,396
|
||||||
|
438,99
|
||||||
|
157,365
|
||||||
|
1260,606
|
||||||
|
373,49
|
||||||
|
266,502
|
||||||
|
492,150
|
||||||
|
1310,632
|
||||||
|
381,59
|
||||||
|
499,655
|
||||||
|
838,313
|
||||||
|
447,813
|
||||||
|
420,515
|
||||||
|
890,515
|
||||||
|
961,670
|
||||||
|
855,154
|
||||||
|
199,422
|
||||||
|
927,102
|
||||||
|
1044,502
|
||||||
|
1128,742
|
||||||
|
408,581
|
||||||
|
1223,773
|
||||||
|
254,217
|
||||||
|
764,628
|
||||||
|
325,161
|
||||||
|
902,581
|
||||||
|
1017,416
|
||||||
|
887,226
|
||||||
|
1265,96
|
||||||
|
1071,396
|
||||||
|
535,141
|
||||||
|
1265,123
|
||||||
|
45,330
|
||||||
|
562,120
|
||||||
|
706,64
|
||||||
|
119,813
|
||||||
|
1205,277
|
||||||
|
209,871
|
||||||
|
753,661
|
||||||
|
832,126
|
||||||
|
53,280
|
||||||
|
93,588
|
||||||
|
731,396
|
||||||
|
515,619
|
||||||
|
473,173
|
||||||
|
541,409
|
||||||
|
326,533
|
||||||
|
1163,53
|
||||||
|
1101,452
|
||||||
|
1285,297
|
||||||
|
754,672
|
||||||
|
455,740
|
||||||
|
472,600
|
||||||
|
1289,147
|
||||||
|
960,640
|
||||||
|
855,534
|
||||||
|
311,74
|
||||||
|
1009,252
|
||||||
|
504,126
|
||||||
|
53,166
|
||||||
|
1257,754
|
||||||
|
836,56
|
||||||
|
758,422
|
||||||
|
1173,476
|
||||||
|
585,194
|
||||||
|
465,185
|
||||||
|
830,73
|
||||||
|
1007,611
|
||||||
|
633,670
|
||||||
|
68,516
|
||||||
|
1310,85
|
||||||
|
955,68
|
||||||
|
689,319
|
||||||
|
1283,726
|
||||||
|
513,334
|
||||||
|
426,86
|
||||||
|
669,427
|
||||||
|
1049,586
|
||||||
|
1280,744
|
||||||
|
1125,831
|
||||||
|
1292,854
|
||||||
|
663,386
|
||||||
|
1266,618
|
||||||
|
748,341
|
||||||
|
1148,547
|
||||||
|
627,420
|
||||||
|
1305,302
|
||||||
|
268,637
|
||||||
|
746,96
|
||||||
|
1252,705
|
||||||
|
232,42
|
||||||
|
1155,239
|
||||||
|
281,378
|
||||||
|
351,611
|
||||||
|
944,789
|
||||||
|
731,249
|
||||||
|
1004,193
|
||||||
|
666,422
|
||||||
|
147,277
|
||||||
|
639,805
|
||||||
|
991,834
|
||||||
|
883,875
|
||||||
|
713,841
|
||||||
|
33,127
|
||||||
|
924,252
|
||||||
|
835,255
|
||||||
|
1173,542
|
||||||
|
355,68
|
||||||
|
455,360
|
||||||
|
937,116
|
||||||
|
475,501
|
||||||
|
549,169
|
||||||
|
835,396
|
||||||
|
18,488
|
||||||
|
400,406
|
||||||
|
523,877
|
||||||
|
556,332
|
||||||
|
222,33
|
||||||
|
627,392
|
||||||
|
301,710
|
||||||
|
748,553
|
||||||
|
818,150
|
||||||
|
545,115
|
||||||
|
584,196
|
||||||
|
55,168
|
||||||
|
870,341
|
||||||
|
305,558
|
||||||
|
634,451
|
||||||
|
601,614
|
||||||
|
45,123
|
||||||
|
254,406
|
||||||
|
393,308
|
||||||
|
1101,871
|
||||||
|
131,93
|
||||||
|
970,662
|
||||||
|
801,478
|
||||||
|
415,817
|
||||||
|
1119,322
|
||||||
|
550,77
|
||||||
|
1258,486
|
||||||
|
1251,486
|
||||||
|
224,567
|
||||||
|
460,155
|
||||||
|
1170,590
|
||||||
|
238,416
|
||||||
|
358,598
|
||||||
|
835,501
|
||||||
|
786,774
|
||||||
|
353,168
|
||||||
|
835,57
|
||||||
|
855,740
|
||||||
|
507,844
|
||||||
|
811,655
|
||||||
|
179,639
|
||||||
|
1064,761
|
||||||
|
633,784
|
||||||
|
1029,378
|
||||||
|
119,753
|
||||||
|
326,85
|
||||||
|
599,866
|
||||||
|
1021,858
|
||||||
|
1082,780
|
||||||
|
1076,814
|
||||||
|
1031,416
|
||||||
|
385,750
|
||||||
|
345,579
|
||||||
|
233,530
|
||||||
|
1078,490
|
||||||
|
791,154
|
||||||
|
145,142
|
||||||
|
1056,453
|
||||||
|
922,215
|
||||||
|
283,331
|
||||||
|
393,464
|
||||||
|
1066,739
|
||||||
|
117,621
|
||||||
|
797,560
|
||||||
|
609,798
|
||||||
|
705,196
|
||||||
|
982,137
|
||||||
|
604,560
|
||||||
|
957,168
|
||||||
|
627,502
|
||||||
|
557,681
|
||||||
|
1128,600
|
||||||
|
604,334
|
||||||
|
793,542
|
||||||
|
445,871
|
||||||
|
386,642
|
||||||
|
621,268
|
||||||
|
1280,374
|
||||||
|
231,226
|
||||||
|
191,322
|
||||||
|
445,96
|
||||||
|
845,576
|
||||||
|
1305,592
|
||||||
|
218,42
|
||||||
|
729,732
|
||||||
|
435,110
|
||||||
|
445,116
|
||||||
|
181,478
|
||||||
|
919,558
|
||||||
|
525,402
|
||||||
|
465,766
|
||||||
|
806,574
|
||||||
|
55,277
|
||||||
|
731,809
|
||||||
|
542,553
|
||||||
|
753,681
|
||||||
|
850,632
|
||||||
|
1237,284
|
||||||
|
25,616
|
||||||
|
1265,330
|
||||||
|
229,885
|
||||||
|
759,72
|
||||||
|
276,512
|
||||||
|
472,581
|
||||||
|
1233,623
|
||||||
|
1216,740
|
||||||
|
420,528
|
||||||
|
1071,369
|
||||||
|
1265,378
|
||||||
|
556,534
|
||||||
|
373,826
|
||||||
|
917,430
|
||||||
|
599,617
|
||||||
|
475,709
|
||||||
|
1310,123
|
||||||
|
957,726
|
||||||
|
191,292
|
||||||
|
701,322
|
||||||
|
295,373
|
||||||
|
499,443
|
||||||
|
65,849
|
||||||
|
472,742
|
||||||
|
682,793
|
||||||
|
562,568
|
||||||
|
605,698
|
||||||
|
765,779
|
||||||
|
865,173
|
||||||
|
711,476
|
||||||
|
837,875
|
||||||
|
599,476
|
||||||
|
597,302
|
||||||
|
530,56
|
||||||
|
730,416
|
||||||
|
269,750
|
||||||
|
1198,553
|
||||||
|
726,196
|
||||||
|
455,472
|
||||||
|
524,344
|
||||||
|
683,882
|
||||||
|
1064,313
|
||||||
|
431,502
|
||||||
|
1130,607
|
||||||
|
991,123
|
||||||
|
361,543
|
||||||
|
507,820
|
||||||
|
628,793
|
||||||
|
1173,128
|
||||||
|
510,537
|
||||||
|
65,654
|
||||||
|
629,194
|
||||||
|
432,33
|
||||||
|
827,891
|
||||||
|
1114,605
|
||||||
|
182,742
|
||||||
|
326,137
|
||||||
|
1058,478
|
||||||
|
962,417
|
||||||
|
947,406
|
||||||
|
1125,560
|
||||||
|
738,267
|
||||||
|
633,672
|
||||||
|
584,698
|
||||||
|
355,56
|
||||||
|
227,19
|
||||||
|
845,318
|
||||||
|
396,378
|
||||||
|
676,451
|
||||||
|
72,574
|
||||||
|
400,5
|
||||||
|
542,341
|
||||||
|
1163,165
|
||||||
|
1098,126
|
||||||
|
639,530
|
||||||
|
436,404
|
||||||
|
910,630
|
||||||
|
353,642
|
||||||
|
938,612
|
||||||
|
884,114
|
||||||
|
832,544
|
||||||
|
1298,680
|
||||||
|
1011,378
|
||||||
|
97,213
|
||||||
|
306,701
|
||||||
|
12,680
|
||||||
|
838,581
|
||||||
|
1246,558
|
||||||
|
1064,252
|
||||||
|
937,49
|
||||||
|
1108,504
|
||||||
|
865,350
|
||||||
|
174,362
|
||||||
|
1094,347
|
||||||
|
1237,205
|
||||||
|
269,144
|
||||||
|
325,733
|
||||||
|
1235,732
|
||||||
|
937,68
|
||||||
|
1175,740
|
||||||
|
803,820
|
||||||
|
604,64
|
||||||
|
601,140
|
||||||
|
402,478
|
||||||
|
1260,222
|
||||||
|
468,590
|
||||||
|
246,194
|
||||||
|
305,523
|
||||||
|
519,292
|
||||||
|
1138,264
|
||||||
|
319,834
|
||||||
|
127,470
|
||||||
|
415,854
|
||||||
|
299,378
|
||||||
|
959,283
|
||||||
|
1223,413
|
||||||
|
1081,885
|
||||||
|
671,162
|
||||||
|
186,369
|
||||||
|
311,362
|
||||||
|
1213,666
|
||||||
|
1131,863
|
||||||
|
1212,114
|
||||||
|
649,638
|
||||||
|
686,374
|
||||||
|
723,445
|
||||||
|
345,315
|
||||||
|
565,823
|
||||||
|
30,520
|
||||||
|
348,254
|
||||||
|
465,576
|
||||||
|
801,721
|
||||||
|
75,681
|
||||||
|
214,117
|
||||||
|
910,453
|
||||||
|
1305,32
|
||||||
|
103,408
|
||||||
|
599,194
|
||||||
|
580,478
|
||||||
|
276,672
|
||||||
|
1138,712
|
||||||
|
689,864
|
||||||
|
233,759
|
||||||
|
18,133
|
||||||
|
1059,661
|
||||||
|
970,232
|
||||||
|
962,254
|
||||||
|
381,588
|
||||||
|
922,663
|
||||||
|
301,252
|
||||||
|
1242,154
|
||||||
|
519,602
|
||||||
|
1009,374
|
||||||
|
773,423
|
||||||
|
117,273
|
||||||
|
597,820
|
||||||
|
556,0
|
||||||
|
246,313
|
||||||
|
1015,521
|
||||||
|
502,308
|
||||||
|
914,378
|
||||||
|
82,627
|
||||||
|
845,525
|
||||||
|
902,462
|
||||||
|
372,612
|
||||||
|
918,808
|
||||||
|
455,870
|
||||||
|
1268,616
|
||||||
|
517,542
|
||||||
|
609,378
|
||||||
|
1115,465
|
||||||
|
874,42
|
||||||
|
1094,795
|
||||||
|
895,376
|
||||||
|
1115,866
|
||||||
|
1086,119
|
||||||
|
656,470
|
||||||
|
629,408
|
||||||
|
1284,101
|
||||||
|
105,617
|
||||||
|
1266,276
|
||||||
|
654,470
|
||||||
|
714,136
|
||||||
|
392,808
|
||||||
|
918,224
|
||||||
|
1015,821
|
||||||
|
755,161
|
||||||
|
1021,323
|
||||||
|
1056,217
|
||||||
|
1280,520
|
||||||
|
87,481
|
||||||
|
731,162
|
||||||
|
1163,396
|
||||||
|
244,155
|
||||||
|
1131,498
|
||||||
|
137,542
|
||||||
|
937,826
|
||||||
|
681,821
|
||||||
|
|
||||||
|
fold along x=655
|
||||||
|
fold along y=447
|
||||||
|
fold along x=327
|
||||||
|
fold along y=223
|
||||||
|
fold along x=163
|
||||||
|
fold along y=111
|
||||||
|
fold along x=81
|
||||||
|
fold along y=55
|
||||||
|
fold along x=40
|
||||||
|
fold along y=27
|
||||||
|
fold along y=13
|
||||||
|
fold along y=6
|
21
inputs/13_test.txt
Normal file
21
inputs/13_test.txt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
6,10
|
||||||
|
0,14
|
||||||
|
9,10
|
||||||
|
0,3
|
||||||
|
10,4
|
||||||
|
4,11
|
||||||
|
6,0
|
||||||
|
6,12
|
||||||
|
4,1
|
||||||
|
0,13
|
||||||
|
10,12
|
||||||
|
3,4
|
||||||
|
3,0
|
||||||
|
8,4
|
||||||
|
1,10
|
||||||
|
2,14
|
||||||
|
8,10
|
||||||
|
9,0
|
||||||
|
|
||||||
|
fold along y=7
|
||||||
|
fold along x=5
|
116
src/day13.rs
Normal file
116
src/day13.rs
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
|
type Point = (i32, i32);
|
||||||
|
#[derive(Debug)]
|
||||||
|
enum Fold {
|
||||||
|
X(i32),
|
||||||
|
Y(i32),
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part_one(points: Vec<Point>, folds: Vec<Fold>) -> i32 {
|
||||||
|
match folds.first().expect("first fold") {
|
||||||
|
Fold::X(coord) => points
|
||||||
|
.into_iter()
|
||||||
|
.map(|(x, y): Point| (x.abs_diff(*coord) as i32, y))
|
||||||
|
.collect::<HashSet<_>>(),
|
||||||
|
Fold::Y(coord) => points
|
||||||
|
.into_iter()
|
||||||
|
.map(|(x, y): Point| (x, y.abs_diff(*coord) as i32))
|
||||||
|
.collect::<HashSet<_>>(),
|
||||||
|
}
|
||||||
|
.len() as i32
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part_two(points: Vec<Point>, folds: Vec<Fold>) {
|
||||||
|
let mut points = points.into_iter().collect::<HashSet<_>>();
|
||||||
|
for fold in folds {
|
||||||
|
points = match fold {
|
||||||
|
Fold::X(coord) => points
|
||||||
|
.into_iter()
|
||||||
|
.map(|(x, y): Point| (coord - x.abs_diff(coord) as i32, y))
|
||||||
|
.collect::<HashSet<_>>(),
|
||||||
|
Fold::Y(coord) => points
|
||||||
|
.into_iter()
|
||||||
|
.map(|(x, y): Point| (x, coord - y.abs_diff(coord) as i32))
|
||||||
|
.collect::<HashSet<_>>(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let max_x = points
|
||||||
|
.iter()
|
||||||
|
.fold(0, |acc, (x, _)| if *x > acc { *x } else { acc });
|
||||||
|
let max_y = points
|
||||||
|
.iter()
|
||||||
|
.fold(0, |acc, (_, y)| if *y > acc { *y } else { acc });
|
||||||
|
let lines: Vec<Vec<char>> = (0..=max_y)
|
||||||
|
.map(|y| {
|
||||||
|
(0..=max_x)
|
||||||
|
.map(|x| if points.contains(&(x, y)) { '#' } else { ' ' })
|
||||||
|
.collect()
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
for line in lines {
|
||||||
|
let line = line.into_iter().collect::<String>();
|
||||||
|
println!("{line}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
fn parse_inputs(input: &str) -> (Vec<Point>, Vec<Fold>) {
|
||||||
|
let mut sections = input.split("\n\n");
|
||||||
|
(
|
||||||
|
sections
|
||||||
|
.next()
|
||||||
|
.expect("coords section")
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let mut coords = line
|
||||||
|
.split(',')
|
||||||
|
.map(|num_str| num_str.parse().expect("coord number"));
|
||||||
|
(
|
||||||
|
coords.next().expect("coord x value"),
|
||||||
|
coords.next().expect("coord y value"),
|
||||||
|
)
|
||||||
|
})
|
||||||
|
.collect(),
|
||||||
|
sections
|
||||||
|
.next()
|
||||||
|
.expect("fold instructions section")
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let (direction, num) =
|
||||||
|
line.split(' ').nth(2).expect("fold equation").split_at(2);
|
||||||
|
let num = num.parse().expect("coordinate to fold at");
|
||||||
|
if direction == "x=" {
|
||||||
|
Fold::X(num)
|
||||||
|
} else {
|
||||||
|
Fold::Y(num)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part_one_sample_test() {
|
||||||
|
let input = include_str!("../inputs/13_test.txt");
|
||||||
|
let (points, folds) = parse_inputs(input);
|
||||||
|
assert_eq!(part_one(points, folds), 17);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part_one_test() {
|
||||||
|
let input = include_str!("../inputs/13.txt");
|
||||||
|
let (points, folds) = parse_inputs(input);
|
||||||
|
assert_eq!(part_one(points, folds), 653);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part_two_test() {
|
||||||
|
let input = include_str!("../inputs/13.txt");
|
||||||
|
let (points, folds) = parse_inputs(input);
|
||||||
|
part_two(points, folds);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user