Day 13
This commit is contained in:
parent
c41f9df243
commit
f3a5c52c4a
@ -50,3 +50,7 @@ path = "src/day11.rs"
|
|||||||
[[bin]]
|
[[bin]]
|
||||||
name = "day12"
|
name = "day12"
|
||||||
path = "src/day12.rs"
|
path = "src/day12.rs"
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "day13"
|
||||||
|
path = "src/day13.rs"
|
||||||
|
804
inputs/day13.txt
Normal file
804
inputs/day13.txt
Normal file
@ -0,0 +1,804 @@
|
|||||||
|
95,196
|
||||||
|
500,420
|
||||||
|
681,633
|
||||||
|
31,581
|
||||||
|
694,348
|
||||||
|
438,824
|
||||||
|
408,555
|
||||||
|
1277,380
|
||||||
|
472,129
|
||||||
|
80,779
|
||||||
|
1290,159
|
||||||
|
823,626
|
||||||
|
1191,668
|
||||||
|
1005,334
|
||||||
|
676,742
|
||||||
|
1191,500
|
||||||
|
264,658
|
||||||
|
1238,756
|
||||||
|
192,201
|
||||||
|
241,673
|
||||||
|
366,236
|
||||||
|
354,518
|
||||||
|
1255,691
|
||||||
|
567,511
|
||||||
|
703,102
|
||||||
|
816,660
|
||||||
|
1128,183
|
||||||
|
647,238
|
||||||
|
319,348
|
||||||
|
1173,434
|
||||||
|
805,665
|
||||||
|
1131,362
|
||||||
|
681,806
|
||||||
|
129,178
|
||||||
|
974,329
|
||||||
|
927,546
|
||||||
|
743,442
|
||||||
|
537,33
|
||||||
|
1205,544
|
||||||
|
1243,868
|
||||||
|
264,276
|
||||||
|
621,604
|
||||||
|
355,140
|
||||||
|
396,452
|
||||||
|
694,546
|
||||||
|
169,159
|
||||||
|
373,36
|
||||||
|
991,686
|
||||||
|
422,872
|
||||||
|
1208,574
|
||||||
|
1081,728
|
||||||
|
470,291
|
||||||
|
587,26
|
||||||
|
731,868
|
||||||
|
505,82
|
||||||
|
1164,598
|
||||||
|
1022,236
|
||||||
|
334,3
|
||||||
|
371,838
|
||||||
|
3,402
|
||||||
|
991,432
|
||||||
|
226,459
|
||||||
|
323,268
|
||||||
|
1303,656
|
||||||
|
408,885
|
||||||
|
507,876
|
||||||
|
629,485
|
||||||
|
592,658
|
||||||
|
105,350
|
||||||
|
1141,733
|
||||||
|
105,110
|
||||||
|
470,63
|
||||||
|
1279,49
|
||||||
|
689,634
|
||||||
|
1203,333
|
||||||
|
323,178
|
||||||
|
43,672
|
||||||
|
694,98
|
||||||
|
493,380
|
||||||
|
1113,44
|
||||||
|
894,320
|
||||||
|
159,385
|
||||||
|
333,698
|
||||||
|
792,366
|
||||||
|
982,428
|
||||||
|
674,61
|
||||||
|
487,11
|
||||||
|
980,506
|
||||||
|
718,658
|
||||||
|
987,64
|
||||||
|
835,140
|
||||||
|
246,488
|
||||||
|
792,528
|
||||||
|
791,868
|
||||||
|
792,864
|
||||||
|
957,826
|
||||||
|
718,210
|
||||||
|
283,0
|
||||||
|
1148,786
|
||||||
|
1027,166
|
||||||
|
1104,147
|
||||||
|
984,681
|
||||||
|
803,707
|
||||||
|
364,215
|
||||||
|
415,190
|
||||||
|
87,511
|
||||||
|
897,353
|
||||||
|
628,376
|
||||||
|
552,11
|
||||||
|
487,152
|
||||||
|
167,298
|
||||||
|
1275,642
|
||||||
|
659,600
|
||||||
|
710,740
|
||||||
|
731,623
|
||||||
|
1203,561
|
||||||
|
1170,166
|
||||||
|
1036,33
|
||||||
|
320,3
|
||||||
|
32,721
|
||||||
|
920,724
|
||||||
|
700,33
|
||||||
|
813,161
|
||||||
|
33,260
|
||||||
|
222,72
|
||||||
|
334,891
|
||||||
|
956,854
|
||||||
|
689,311
|
||||||
|
218,96
|
||||||
|
151,296
|
||||||
|
1046,434
|
||||||
|
924,744
|
||||||
|
1113,472
|
||||||
|
912,513
|
||||||
|
164,213
|
||||||
|
1039,427
|
||||||
|
483,432
|
||||||
|
21,702
|
||||||
|
907,847
|
||||||
|
35,642
|
||||||
|
681,460
|
||||||
|
990,891
|
||||||
|
661,250
|
||||||
|
175,150
|
||||||
|
1248,771
|
||||||
|
234,211
|
||||||
|
487,600
|
||||||
|
1230,794
|
||||||
|
415,638
|
||||||
|
554,52
|
||||||
|
517,766
|
||||||
|
835,466
|
||||||
|
179,532
|
||||||
|
659,742
|
||||||
|
681,261
|
||||||
|
842,614
|
||||||
|
827,880
|
||||||
|
74,259
|
||||||
|
495,807
|
||||||
|
1266,84
|
||||||
|
487,61
|
||||||
|
1071,480
|
||||||
|
682,376
|
||||||
|
105,558
|
||||||
|
731,26
|
||||||
|
288,658
|
||||||
|
721,863
|
||||||
|
853,828
|
||||||
|
572,488
|
||||||
|
1151,61
|
||||||
|
917,415
|
||||||
|
1084,50
|
||||||
|
827,462
|
||||||
|
26,201
|
||||||
|
7,238
|
||||||
|
689,310
|
||||||
|
229,280
|
||||||
|
125,399
|
||||||
|
1250,291
|
||||||
|
447,674
|
||||||
|
838,129
|
||||||
|
179,588
|
||||||
|
323,492
|
||||||
|
927,427
|
||||||
|
159,197
|
||||||
|
927,318
|
||||||
|
1089,126
|
||||||
|
1163,187
|
||||||
|
472,765
|
||||||
|
1183,372
|
||||||
|
55,691
|
||||||
|
1150,10
|
||||||
|
85,550
|
||||||
|
63,150
|
||||||
|
607,558
|
||||||
|
155,98
|
||||||
|
1078,213
|
||||||
|
336,631
|
||||||
|
492,108
|
||||||
|
1064,885
|
||||||
|
1036,714
|
||||||
|
102,883
|
||||||
|
1235,868
|
||||||
|
536,33
|
||||||
|
791,26
|
||||||
|
651,152
|
||||||
|
1151,659
|
||||||
|
238,574
|
||||||
|
504,39
|
||||||
|
938,215
|
||||||
|
1046,276
|
||||||
|
815,87
|
||||||
|
1058,411
|
||||||
|
1290,600
|
||||||
|
497,285
|
||||||
|
542,344
|
||||||
|
146,598
|
||||||
|
577,438
|
||||||
|
703,571
|
||||||
|
987,659
|
||||||
|
874,96
|
||||||
|
146,856
|
||||||
|
528,161
|
||||||
|
561,856
|
||||||
|
818,876
|
||||||
|
300,210
|
||||||
|
505,665
|
||||||
|
267,590
|
||||||
|
306,742
|
||||||
|
577,736
|
||||||
|
1121,688
|
||||||
|
793,882
|
||||||
|
179,259
|
||||||
|
1275,638
|
||||||
|
127,397
|
||||||
|
1022,348
|
||||||
|
1151,309
|
||||||
|
971,864
|
||||||
|
26,357
|
||||||
|
877,560
|
||||||
|
308,114
|
||||||
|
1225,669
|
||||||
|
361,534
|
||||||
|
813,285
|
||||||
|
147,466
|
||||||
|
803,428
|
||||||
|
1029,410
|
||||||
|
196,362
|
||||||
|
984,817
|
||||||
|
840,63
|
||||||
|
514,728
|
||||||
|
1298,87
|
||||||
|
293,492
|
||||||
|
600,154
|
||||||
|
271,585
|
||||||
|
536,609
|
||||||
|
45,726
|
||||||
|
935,683
|
||||||
|
939,0
|
||||||
|
864,493
|
||||||
|
189,688
|
||||||
|
964,711
|
||||||
|
711,875
|
||||||
|
231,644
|
||||||
|
79,402
|
||||||
|
823,61
|
||||||
|
629,261
|
||||||
|
417,668
|
||||||
|
1282,614
|
||||||
|
816,100
|
||||||
|
803,635
|
||||||
|
1275,229
|
||||||
|
962,742
|
||||||
|
1166,294
|
||||||
|
75,666
|
||||||
|
733,886
|
||||||
|
878,822
|
||||||
|
364,679
|
||||||
|
1285,429
|
||||||
|
110,824
|
||||||
|
774,705
|
||||||
|
294,721
|
||||||
|
279,344
|
||||||
|
464,264
|
||||||
|
1109,847
|
||||||
|
267,486
|
||||||
|
1091,266
|
||||||
|
20,735
|
||||||
|
1011,866
|
||||||
|
888,479
|
||||||
|
1205,110
|
||||||
|
26,89
|
||||||
|
105,544
|
||||||
|
822,234
|
||||||
|
497,161
|
||||||
|
31,357
|
||||||
|
463,103
|
||||||
|
537,484
|
||||||
|
279,550
|
||||||
|
525,780
|
||||||
|
232,661
|
||||||
|
443,883
|
||||||
|
20,607
|
||||||
|
1278,621
|
||||||
|
386,296
|
||||||
|
197,472
|
||||||
|
957,460
|
||||||
|
246,339
|
||||||
|
267,366
|
||||||
|
1260,438
|
||||||
|
1099,435
|
||||||
|
305,334
|
||||||
|
644,582
|
||||||
|
238,747
|
||||||
|
311,458
|
||||||
|
1174,366
|
||||||
|
1082,394
|
||||||
|
1073,500
|
||||||
|
75,175
|
||||||
|
1120,264
|
||||||
|
902,324
|
||||||
|
77,606
|
||||||
|
741,344
|
||||||
|
323,626
|
||||||
|
733,438
|
||||||
|
201,847
|
||||||
|
756,883
|
||||||
|
8,777
|
||||||
|
610,455
|
||||||
|
1251,38
|
||||||
|
507,259
|
||||||
|
768,550
|
||||||
|
967,716
|
||||||
|
980,10
|
||||||
|
32,621
|
||||||
|
272,126
|
||||||
|
299,866
|
||||||
|
1175,474
|
||||||
|
1272,595
|
||||||
|
264,618
|
||||||
|
927,602
|
||||||
|
281,278
|
||||||
|
800,394
|
||||||
|
1026,249
|
||||||
|
159,61
|
||||||
|
552,834
|
||||||
|
621,220
|
||||||
|
422,479
|
||||||
|
977,196
|
||||||
|
1292,562
|
||||||
|
600,740
|
||||||
|
810,420
|
||||||
|
264,434
|
||||||
|
323,659
|
||||||
|
1002,780
|
||||||
|
602,852
|
||||||
|
1027,894
|
||||||
|
417,21
|
||||||
|
621,584
|
||||||
|
1295,803
|
||||||
|
472,487
|
||||||
|
976,891
|
||||||
|
793,12
|
||||||
|
89,674
|
||||||
|
1081,166
|
||||||
|
736,884
|
||||||
|
140,614
|
||||||
|
537,861
|
||||||
|
939,838
|
||||||
|
1141,159
|
||||||
|
1072,299
|
||||||
|
572,739
|
||||||
|
219,628
|
||||||
|
1099,11
|
||||||
|
383,467
|
||||||
|
572,155
|
||||||
|
808,700
|
||||||
|
798,735
|
||||||
|
1078,479
|
||||||
|
552,399
|
||||||
|
349,560
|
||||||
|
197,102
|
||||||
|
1028,663
|
||||||
|
140,280
|
||||||
|
514,838
|
||||||
|
359,805
|
||||||
|
169,733
|
||||||
|
610,138
|
||||||
|
62,236
|
||||||
|
1275,256
|
||||||
|
1208,847
|
||||||
|
642,87
|
||||||
|
167,294
|
||||||
|
117,96
|
||||||
|
182,711
|
||||||
|
1166,855
|
||||||
|
206,299
|
||||||
|
674,71
|
||||||
|
974,397
|
||||||
|
499,572
|
||||||
|
408,100
|
||||||
|
1135,150
|
||||||
|
863,614
|
||||||
|
288,819
|
||||||
|
110,768
|
||||||
|
382,96
|
||||||
|
646,777
|
||||||
|
708,42
|
||||||
|
169,161
|
||||||
|
992,117
|
||||||
|
499,98
|
||||||
|
150,71
|
||||||
|
18,52
|
||||||
|
1143,509
|
||||||
|
1113,828
|
||||||
|
293,422
|
||||||
|
383,322
|
||||||
|
125,847
|
||||||
|
807,150
|
||||||
|
335,546
|
||||||
|
186,280
|
||||||
|
383,602
|
||||||
|
1134,199
|
||||||
|
1134,695
|
||||||
|
735,514
|
||||||
|
403,847
|
||||||
|
135,252
|
||||||
|
554,842
|
||||||
|
35,126
|
||||||
|
832,487
|
||||||
|
274,180
|
||||||
|
422,239
|
||||||
|
21,192
|
||||||
|
294,49
|
||||||
|
388,689
|
||||||
|
226,50
|
||||||
|
890,435
|
||||||
|
1031,344
|
||||||
|
1113,850
|
||||||
|
1002,375
|
||||||
|
555,710
|
||||||
|
1284,133
|
||||||
|
951,537
|
||||||
|
949,534
|
||||||
|
1285,485
|
||||||
|
294,621
|
||||||
|
415,862
|
||||||
|
838,173
|
||||||
|
1110,187
|
||||||
|
182,183
|
||||||
|
211,446
|
||||||
|
927,539
|
||||||
|
961,192
|
||||||
|
1198,886
|
||||||
|
1126,63
|
||||||
|
1042,598
|
||||||
|
517,576
|
||||||
|
766,481
|
||||||
|
1210,724
|
||||||
|
251,271
|
||||||
|
835,428
|
||||||
|
1027,614
|
||||||
|
708,33
|
||||||
|
1307,95
|
||||||
|
89,425
|
||||||
|
336,117
|
||||||
|
984,77
|
||||||
|
1284,805
|
||||||
|
105,784
|
||||||
|
646,845
|
||||||
|
75,868
|
||||||
|
773,120
|
||||||
|
1046,771
|
||||||
|
85,102
|
||||||
|
100,571
|
||||||
|
835,259
|
||||||
|
344,374
|
||||||
|
1173,460
|
||||||
|
1298,15
|
||||||
|
311,436
|
||||||
|
44,33
|
||||||
|
472,686
|
||||||
|
815,61
|
||||||
|
300,854
|
||||||
|
579,175
|
||||||
|
1084,396
|
||||||
|
392,394
|
||||||
|
465,688
|
||||||
|
1233,158
|
||||||
|
691,574
|
||||||
|
823,152
|
||||||
|
967,268
|
||||||
|
793,409
|
||||||
|
949,583
|
||||||
|
495,659
|
||||||
|
715,408
|
||||||
|
498,227
|
||||||
|
1275,252
|
||||||
|
967,436
|
||||||
|
918,500
|
||||||
|
290,679
|
||||||
|
848,693
|
||||||
|
159,509
|
||||||
|
636,610
|
||||||
|
211,435
|
||||||
|
232,479
|
||||||
|
238,320
|
||||||
|
112,120
|
||||||
|
1305,196
|
||||||
|
827,14
|
||||||
|
611,670
|
||||||
|
738,406
|
||||||
|
457,850
|
||||||
|
823,742
|
||||||
|
2,212
|
||||||
|
629,633
|
||||||
|
805,82
|
||||||
|
1233,456
|
||||||
|
371,614
|
||||||
|
331,659
|
||||||
|
847,103
|
||||||
|
336,329
|
||||||
|
703,558
|
||||||
|
1118,425
|
||||||
|
396,4
|
||||||
|
35,574
|
||||||
|
972,203
|
||||||
|
1143,298
|
||||||
|
1225,792
|
||||||
|
371,504
|
||||||
|
507,466
|
||||||
|
1043,486
|
||||||
|
445,33
|
||||||
|
750,470
|
||||||
|
160,122
|
||||||
|
966,520
|
||||||
|
408,324
|
||||||
|
283,614
|
||||||
|
812,227
|
||||||
|
472,407
|
||||||
|
718,877
|
||||||
|
217,94
|
||||||
|
589,165
|
||||||
|
634,287
|
||||||
|
197,344
|
||||||
|
282,663
|
||||||
|
907,495
|
||||||
|
986,234
|
||||||
|
336,341
|
||||||
|
699,224
|
||||||
|
602,42
|
||||||
|
691,480
|
||||||
|
1113,344
|
||||||
|
1221,674
|
||||||
|
343,763
|
||||||
|
387,366
|
||||||
|
957,68
|
||||||
|
619,344
|
||||||
|
306,511
|
||||||
|
457,828
|
||||||
|
1061,886
|
||||||
|
1181,178
|
||||||
|
1146,213
|
||||||
|
504,743
|
||||||
|
93,856
|
||||||
|
112,8
|
||||||
|
353,429
|
||||||
|
1255,796
|
||||||
|
982,681
|
||||||
|
457,8
|
||||||
|
420,556
|
||||||
|
1233,509
|
||||||
|
939,446
|
||||||
|
1290,63
|
||||||
|
924,150
|
||||||
|
1285,409
|
||||||
|
544,126
|
||||||
|
380,628
|
||||||
|
136,366
|
||||||
|
196,810
|
||||||
|
536,717
|
||||||
|
687,89
|
||||||
|
1052,4
|
||||||
|
806,599
|
||||||
|
470,831
|
||||||
|
633,558
|
||||||
|
293,583
|
||||||
|
1038,126
|
||||||
|
838,721
|
||||||
|
599,1
|
||||||
|
494,660
|
||||||
|
1284,537
|
||||||
|
417,469
|
||||||
|
758,462
|
||||||
|
383,427
|
||||||
|
619,32
|
||||||
|
927,322
|
||||||
|
422,22
|
||||||
|
92,883
|
||||||
|
237,873
|
||||||
|
1198,774
|
||||||
|
1093,94
|
||||||
|
211,459
|
||||||
|
582,138
|
||||||
|
1300,243
|
||||||
|
102,856
|
||||||
|
846,21
|
||||||
|
7,656
|
||||||
|
318,777
|
||||||
|
567,442
|
||||||
|
1307,229
|
||||||
|
927,501
|
||||||
|
390,170
|
||||||
|
661,644
|
||||||
|
465,651
|
||||||
|
647,656
|
||||||
|
493,514
|
||||||
|
627,28
|
||||||
|
89,469
|
||||||
|
1089,320
|
||||||
|
1017,135
|
||||||
|
27,530
|
||||||
|
967,10
|
||||||
|
35,256
|
||||||
|
1039,124
|
||||||
|
820,892
|
||||||
|
847,791
|
||||||
|
636,61
|
||||||
|
1223,511
|
||||||
|
574,772
|
||||||
|
691,677
|
||||||
|
636,833
|
||||||
|
1128,711
|
||||||
|
689,738
|
||||||
|
514,504
|
||||||
|
65,367
|
||||||
|
927,585
|
||||||
|
700,756
|
||||||
|
1160,599
|
||||||
|
1277,514
|
||||||
|
865,33
|
||||||
|
636,562
|
||||||
|
629,409
|
||||||
|
1174,30
|
||||||
|
492,18
|
||||||
|
1282,147
|
||||||
|
893,226
|
||||||
|
1284,201
|
||||||
|
447,280
|
||||||
|
1208,856
|
||||||
|
355,306
|
||||||
|
10,651
|
||||||
|
60,603
|
||||||
|
504,855
|
||||||
|
488,436
|
||||||
|
398,625
|
||||||
|
863,728
|
||||||
|
258,890
|
||||||
|
857,47
|
||||||
|
33,514
|
||||||
|
974,631
|
||||||
|
238,443
|
||||||
|
264,771
|
||||||
|
423,250
|
||||||
|
758,11
|
||||||
|
293,759
|
||||||
|
982,466
|
||||||
|
992,777
|
||||||
|
495,665
|
||||||
|
519,26
|
||||||
|
55,484
|
||||||
|
197,646
|
||||||
|
629,434
|
||||||
|
783,820
|
||||||
|
1073,469
|
||||||
|
354,854
|
||||||
|
775,730
|
||||||
|
504,599
|
||||||
|
1263,344
|
||||||
|
432,822
|
||||||
|
433,560
|
||||||
|
319,208
|
||||||
|
1208,435
|
||||||
|
1017,402
|
||||||
|
1183,397
|
||||||
|
1027,418
|
||||||
|
239,480
|
||||||
|
495,742
|
||||||
|
565,668
|
||||||
|
1005,478
|
||||||
|
905,61
|
||||||
|
623,537
|
||||||
|
902,772
|
||||||
|
651,809
|
||||||
|
966,374
|
||||||
|
1091,355
|
||||||
|
346,780
|
||||||
|
1079,250
|
||||||
|
535,730
|
||||||
|
800,500
|
||||||
|
127,497
|
||||||
|
1078,22
|
||||||
|
1010,684
|
||||||
|
1114,362
|
||||||
|
241,120
|
||||||
|
462,537
|
||||||
|
408,122
|
||||||
|
1113,8
|
||||||
|
494,100
|
||||||
|
709,352
|
||||||
|
241,497
|
||||||
|
701,168
|
||||||
|
922,607
|
||||||
|
920,276
|
||||||
|
127,845
|
||||||
|
44,84
|
||||||
|
371,418
|
||||||
|
827,432
|
||||||
|
1072,707
|
||||||
|
838,487
|
||||||
|
293,135
|
||||||
|
873,878
|
||||||
|
237,425
|
||||||
|
72,756
|
||||||
|
1139,14
|
||||||
|
1012,299
|
||||||
|
855,596
|
||||||
|
621,634
|
||||||
|
1131,84
|
||||||
|
1263,323
|
||||||
|
773,774
|
||||||
|
979,659
|
||||||
|
609,168
|
||||||
|
420,435
|
||||||
|
505,229
|
||||||
|
815,833
|
||||||
|
1164,856
|
||||||
|
917,479
|
||||||
|
602,490
|
||||||
|
301,68
|
||||||
|
179,84
|
||||||
|
589,729
|
||||||
|
50,456
|
||||||
|
554,883
|
||||||
|
507,18
|
||||||
|
967,178
|
||||||
|
510,500
|
||||||
|
845,243
|
||||||
|
475,428
|
||||||
|
1265,278
|
||||||
|
1078,661
|
||||||
|
544,861
|
||||||
|
621,738
|
||||||
|
1005,560
|
||||||
|
1072,443
|
||||||
|
875,355
|
||||||
|
18,114
|
||||||
|
361,583
|
||||||
|
1102,493
|
||||||
|
954,280
|
||||||
|
221,574
|
||||||
|
428,571
|
||||||
|
623,89
|
||||||
|
1114,84
|
||||||
|
749,262
|
||||||
|
1267,224
|
||||||
|
803,876
|
||||||
|
1121,542
|
||||||
|
510,208
|
||||||
|
1150,548
|
||||||
|
321,698
|
||||||
|
820,786
|
||||||
|
627,812
|
||||||
|
1205,784
|
||||||
|
92,694
|
||||||
|
1307,117
|
||||||
|
1192,625
|
||||||
|
363,798
|
||||||
|
10,203
|
||||||
|
216,152
|
||||||
|
817,514
|
||||||
|
308,375
|
||||||
|
378,886
|
||||||
|
592,877
|
||||||
|
1285,261
|
||||||
|
311,716
|
||||||
|
335,686
|
||||||
|
514,56
|
||||||
|
610,756
|
||||||
|
1059,26
|
||||||
|
774,285
|
||||||
|
|
||||||
|
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
|
91
src/day13.rs
Normal file
91
src/day13.rs
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
use std::collections::HashSet;
|
||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
enum Axis {
|
||||||
|
X,
|
||||||
|
Y,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct FoldInstruction {
|
||||||
|
axis: Axis,
|
||||||
|
position: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FoldInstruction {
|
||||||
|
fn wrap(&self, dot: (usize, usize)) -> (usize, usize) {
|
||||||
|
match self.axis {
|
||||||
|
Axis::X if dot.0 >= self.position => (2 * self.position - dot.0, dot.1),
|
||||||
|
Axis::Y if dot.1 >= self.position => (dot.0, 2 * self.position - dot.1),
|
||||||
|
_ => (dot.0, dot.1),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FromStr for FoldInstruction {
|
||||||
|
type Err = ();
|
||||||
|
|
||||||
|
fn from_str(s: &str) -> Result<FoldInstruction, Self::Err> {
|
||||||
|
let (a, p) = s[11..].split_once('=').unwrap();
|
||||||
|
let axis = match a {
|
||||||
|
"x" => Axis::X,
|
||||||
|
"y" => Axis::Y,
|
||||||
|
_ => return Err(()),
|
||||||
|
};
|
||||||
|
let position = p.parse().unwrap();
|
||||||
|
Ok(FoldInstruction { axis, position })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
const INPUT: &str = include_str!("../inputs/day13.txt");
|
||||||
|
let sections = INPUT.split_once("\n\n").unwrap();
|
||||||
|
let mut dots = sections
|
||||||
|
.0
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let (a, b) = line.split_once(',').unwrap();
|
||||||
|
(a.parse().unwrap(), b.parse().unwrap())
|
||||||
|
})
|
||||||
|
.collect::<Vec<(usize, usize)>>();
|
||||||
|
let instructions = sections
|
||||||
|
.1
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.parse().unwrap())
|
||||||
|
.collect::<Vec<FoldInstruction>>();
|
||||||
|
|
||||||
|
let mut all_dots: HashSet<(usize, usize)> = HashSet::new();
|
||||||
|
for dot in dots.iter() {
|
||||||
|
all_dots.insert(instructions[0].wrap(*dot));
|
||||||
|
}
|
||||||
|
println!("solution {}", all_dots.len());
|
||||||
|
|
||||||
|
all_dots.drain();
|
||||||
|
for instr in instructions {
|
||||||
|
for dot in dots.iter() {
|
||||||
|
all_dots.insert(instr.wrap(*dot));
|
||||||
|
}
|
||||||
|
dots = all_dots.drain().collect();
|
||||||
|
}
|
||||||
|
for y in 0..6 {
|
||||||
|
println!(
|
||||||
|
"{}",
|
||||||
|
(0..40)
|
||||||
|
.map(|x| if dots.contains(&(x, y)) {
|
||||||
|
'🟪'
|
||||||
|
} else {
|
||||||
|
'⬛'
|
||||||
|
})
|
||||||
|
.collect::<String>()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_wrap_instruction() {
|
||||||
|
let instruction = FoldInstruction {
|
||||||
|
axis: Axis::Y,
|
||||||
|
position: 7,
|
||||||
|
};
|
||||||
|
assert_eq!(instruction.wrap((3, 0)), (3, 0));
|
||||||
|
assert_eq!(instruction.wrap((1, 10)), (1, 4));
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user