13
This commit is contained in:
parent
39e7c82527
commit
76de6261c3
22
13/CMakeLists.txt
Normal file
22
13/CMakeLists.txt
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
enable_language(CXX)
|
||||||
|
|
||||||
|
project(AoC13)
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
include_directories(/usr/local/include)
|
||||||
|
link_directories(/usr/local/lib)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
add_executable(${CMAKE_PROJECT_NAME} WIN32)
|
||||||
|
else()
|
||||||
|
add_executable(${CMAKE_PROJECT_NAME})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_sources(${CMAKE_PROJECT_NAME}
|
||||||
|
PRIVATE main.cpp
|
||||||
|
)
|
866
13/input
Normal file
866
13/input
Normal file
@ -0,0 +1,866 @@
|
|||||||
|
17,52
|
||||||
|
740,52
|
||||||
|
559,424
|
||||||
|
820,415
|
||||||
|
880,718
|
||||||
|
867,814
|
||||||
|
1136,658
|
||||||
|
420,170
|
||||||
|
492,530
|
||||||
|
300,686
|
||||||
|
1201,233
|
||||||
|
1161,116
|
||||||
|
247,584
|
||||||
|
43,754
|
||||||
|
231,857
|
||||||
|
980,388
|
||||||
|
80,173
|
||||||
|
560,478
|
||||||
|
1148,4
|
||||||
|
1121,187
|
||||||
|
492,219
|
||||||
|
649,492
|
||||||
|
599,788
|
||||||
|
624,456
|
||||||
|
455,584
|
||||||
|
52,277
|
||||||
|
903,310
|
||||||
|
177,598
|
||||||
|
654,891
|
||||||
|
277,623
|
||||||
|
180,80
|
||||||
|
68,702
|
||||||
|
751,555
|
||||||
|
55,788
|
||||||
|
175,16
|
||||||
|
288,236
|
||||||
|
17,842
|
||||||
|
1215,122
|
||||||
|
1309,131
|
||||||
|
475,639
|
||||||
|
1148,113
|
||||||
|
475,670
|
||||||
|
140,763
|
||||||
|
251,767
|
||||||
|
261,191
|
||||||
|
177,84
|
||||||
|
1068,724
|
||||||
|
179,639
|
||||||
|
671,444
|
||||||
|
569,148
|
||||||
|
1051,297
|
||||||
|
1076,495
|
||||||
|
763,452
|
||||||
|
1,152
|
||||||
|
475,224
|
||||||
|
80,423
|
||||||
|
837,128
|
||||||
|
1033,399
|
||||||
|
649,402
|
||||||
|
234,443
|
||||||
|
1309,579
|
||||||
|
599,206
|
||||||
|
1245,703
|
||||||
|
0,787
|
||||||
|
1258,277
|
||||||
|
283,306
|
||||||
|
1120,877
|
||||||
|
611,140
|
||||||
|
703,386
|
||||||
|
377,175
|
||||||
|
825,439
|
||||||
|
32,651
|
||||||
|
653,47
|
||||||
|
1158,886
|
||||||
|
1300,348
|
||||||
|
243,770
|
||||||
|
913,206
|
||||||
|
1146,479
|
||||||
|
508,94
|
||||||
|
242,593
|
||||||
|
289,674
|
||||||
|
54,350
|
||||||
|
693,668
|
||||||
|
527,448
|
||||||
|
569,779
|
||||||
|
833,477
|
||||||
|
898,593
|
||||||
|
321,308
|
||||||
|
248,40
|
||||||
|
1295,544
|
||||||
|
1093,9
|
||||||
|
529,82
|
||||||
|
559,409
|
||||||
|
919,812
|
||||||
|
653,656
|
||||||
|
343,884
|
||||||
|
83,124
|
||||||
|
793,610
|
||||||
|
385,625
|
||||||
|
904,264
|
||||||
|
1145,686
|
||||||
|
229,32
|
||||||
|
326,107
|
||||||
|
425,862
|
||||||
|
1131,389
|
||||||
|
1143,487
|
||||||
|
1,579
|
||||||
|
1009,620
|
||||||
|
900,222
|
||||||
|
174,658
|
||||||
|
167,39
|
||||||
|
653,686
|
||||||
|
383,35
|
||||||
|
493,735
|
||||||
|
190,465
|
||||||
|
1255,572
|
||||||
|
334,371
|
||||||
|
652,612
|
||||||
|
1265,242
|
||||||
|
95,409
|
||||||
|
1101,507
|
||||||
|
363,611
|
||||||
|
1010,765
|
||||||
|
939,306
|
||||||
|
1022,236
|
||||||
|
189,129
|
||||||
|
146,94
|
||||||
|
575,91
|
||||||
|
726,61
|
||||||
|
837,724
|
||||||
|
310,128
|
||||||
|
1255,788
|
||||||
|
666,472
|
||||||
|
823,855
|
||||||
|
1309,847
|
||||||
|
1007,162
|
||||||
|
1033,271
|
||||||
|
480,207
|
||||||
|
371,812
|
||||||
|
1051,81
|
||||||
|
979,779
|
||||||
|
654,79
|
||||||
|
119,894
|
||||||
|
1131,488
|
||||||
|
1068,469
|
||||||
|
211,890
|
||||||
|
199,184
|
||||||
|
831,878
|
||||||
|
430,718
|
||||||
|
902,688
|
||||||
|
1183,486
|
||||||
|
412,301
|
||||||
|
865,535
|
||||||
|
639,444
|
||||||
|
887,788
|
||||||
|
616,672
|
||||||
|
43,140
|
||||||
|
617,2
|
||||||
|
1300,472
|
||||||
|
915,873
|
||||||
|
1227,322
|
||||||
|
802,352
|
||||||
|
641,779
|
||||||
|
1131,290
|
||||||
|
248,264
|
||||||
|
701,724
|
||||||
|
62,686
|
||||||
|
661,315
|
||||||
|
1125,609
|
||||||
|
1295,131
|
||||||
|
1233,689
|
||||||
|
723,365
|
||||||
|
579,767
|
||||||
|
1121,765
|
||||||
|
1148,227
|
||||||
|
907,799
|
||||||
|
1066,240
|
||||||
|
545,233
|
||||||
|
395,201
|
||||||
|
751,872
|
||||||
|
1062,630
|
||||||
|
985,231
|
||||||
|
5,315
|
||||||
|
735,91
|
||||||
|
70,833
|
||||||
|
899,91
|
||||||
|
584,514
|
||||||
|
492,675
|
||||||
|
701,242
|
||||||
|
559,609
|
||||||
|
127,486
|
||||||
|
1051,675
|
||||||
|
1148,245
|
||||||
|
1009,274
|
||||||
|
987,429
|
||||||
|
1287,605
|
||||||
|
134,505
|
||||||
|
830,616
|
||||||
|
1156,819
|
||||||
|
411,500
|
||||||
|
950,532
|
||||||
|
269,269
|
||||||
|
1285,123
|
||||||
|
408,672
|
||||||
|
180,814
|
||||||
|
672,318
|
||||||
|
498,187
|
||||||
|
321,627
|
||||||
|
1293,842
|
||||||
|
1255,635
|
||||||
|
711,788
|
||||||
|
162,677
|
||||||
|
1193,835
|
||||||
|
835,224
|
||||||
|
480,616
|
||||||
|
782,628
|
||||||
|
671,59
|
||||||
|
830,680
|
||||||
|
691,611
|
||||||
|
55,572
|
||||||
|
1300,239
|
||||||
|
976,371
|
||||||
|
360,532
|
||||||
|
656,891
|
||||||
|
80,672
|
||||||
|
885,837
|
||||||
|
117,390
|
||||||
|
721,191
|
||||||
|
62,208
|
||||||
|
741,148
|
||||||
|
343,668
|
||||||
|
549,872
|
||||||
|
1183,446
|
||||||
|
95,563
|
||||||
|
1076,451
|
||||||
|
905,205
|
||||||
|
574,49
|
||||||
|
385,717
|
||||||
|
162,331
|
||||||
|
1226,817
|
||||||
|
477,296
|
||||||
|
252,371
|
||||||
|
492,306
|
||||||
|
35,611
|
||||||
|
758,400
|
||||||
|
273,661
|
||||||
|
899,418
|
||||||
|
989,332
|
||||||
|
77,205
|
||||||
|
239,704
|
||||||
|
902,423
|
||||||
|
474,80
|
||||||
|
411,770
|
||||||
|
80,128
|
||||||
|
500,371
|
||||||
|
446,688
|
||||||
|
529,530
|
||||||
|
885,862
|
||||||
|
1068,21
|
||||||
|
294,532
|
||||||
|
783,408
|
||||||
|
381,233
|
||||||
|
321,332
|
||||||
|
751,424
|
||||||
|
1133,84
|
||||||
|
390,432
|
||||||
|
43,252
|
||||||
|
1149,208
|
||||||
|
1019,310
|
||||||
|
947,845
|
||||||
|
890,219
|
||||||
|
164,722
|
||||||
|
70,61
|
||||||
|
796,259
|
||||||
|
333,267
|
||||||
|
242,469
|
||||||
|
863,530
|
||||||
|
1163,672
|
||||||
|
219,348
|
||||||
|
830,687
|
||||||
|
411,842
|
||||||
|
545,728
|
||||||
|
325,628
|
||||||
|
1101,836
|
||||||
|
386,82
|
||||||
|
234,399
|
||||||
|
325,686
|
||||||
|
480,724
|
||||||
|
321,315
|
||||||
|
544,837
|
||||||
|
1247,530
|
||||||
|
169,738
|
||||||
|
1309,42
|
||||||
|
885,57
|
||||||
|
989,315
|
||||||
|
585,318
|
||||||
|
1146,172
|
||||||
|
925,424
|
||||||
|
933,271
|
||||||
|
1031,732
|
||||||
|
1079,509
|
||||||
|
149,88
|
||||||
|
771,277
|
||||||
|
1136,687
|
||||||
|
1,47
|
||||||
|
395,469
|
||||||
|
329,238
|
||||||
|
1230,672
|
||||||
|
741,779
|
||||||
|
321,267
|
||||||
|
1079,253
|
||||||
|
902,672
|
||||||
|
795,177
|
||||||
|
1300,546
|
||||||
|
261,390
|
||||||
|
165,208
|
||||||
|
899,124
|
||||||
|
1101,354
|
||||||
|
169,215
|
||||||
|
693,226
|
||||||
|
475,672
|
||||||
|
0,891
|
||||||
|
482,75
|
||||||
|
661,220
|
||||||
|
345,766
|
||||||
|
385,126
|
||||||
|
208,766
|
||||||
|
549,501
|
||||||
|
358,456
|
||||||
|
495,71
|
||||||
|
957,317
|
||||||
|
425,57
|
||||||
|
283,222
|
||||||
|
1227,646
|
||||||
|
1066,761
|
||||||
|
939,812
|
||||||
|
1103,364
|
||||||
|
793,60
|
||||||
|
1185,450
|
||||||
|
967,884
|
||||||
|
617,668
|
||||||
|
479,878
|
||||||
|
445,59
|
||||||
|
885,725
|
||||||
|
1007,610
|
||||||
|
1183,51
|
||||||
|
373,876
|
||||||
|
885,505
|
||||||
|
802,94
|
||||||
|
416,483
|
||||||
|
657,686
|
||||||
|
52,366
|
||||||
|
1265,283
|
||||||
|
1243,609
|
||||||
|
301,620
|
||||||
|
1237,861
|
||||||
|
763,227
|
||||||
|
469,509
|
||||||
|
308,712
|
||||||
|
724,590
|
||||||
|
1158,8
|
||||||
|
798,638
|
||||||
|
705,175
|
||||||
|
619,446
|
||||||
|
406,630
|
||||||
|
820,781
|
||||||
|
739,131
|
||||||
|
701,838
|
||||||
|
1310,161
|
||||||
|
890,675
|
||||||
|
433,424
|
||||||
|
477,127
|
||||||
|
982,693
|
||||||
|
372,654
|
||||||
|
1141,604
|
||||||
|
574,173
|
||||||
|
208,206
|
||||||
|
656,79
|
||||||
|
356,505
|
||||||
|
693,2
|
||||||
|
972,395
|
||||||
|
639,450
|
||||||
|
773,835
|
||||||
|
1041,269
|
||||||
|
433,798
|
||||||
|
1275,611
|
||||||
|
375,485
|
||||||
|
907,319
|
||||||
|
447,364
|
||||||
|
825,674
|
||||||
|
831,430
|
||||||
|
1062,854
|
||||||
|
395,597
|
||||||
|
686,456
|
||||||
|
887,485
|
||||||
|
682,462
|
||||||
|
877,52
|
||||||
|
237,677
|
||||||
|
282,464
|
||||||
|
0,61
|
||||||
|
1183,856
|
||||||
|
915,675
|
||||||
|
830,170
|
||||||
|
1273,892
|
||||||
|
82,0
|
||||||
|
691,688
|
||||||
|
537,838
|
||||||
|
505,88
|
||||||
|
855,584
|
||||||
|
288,894
|
||||||
|
248,33
|
||||||
|
435,763
|
||||||
|
363,38
|
||||||
|
689,226
|
||||||
|
115,452
|
||||||
|
403,799
|
||||||
|
291,67
|
||||||
|
493,159
|
||||||
|
1027,306
|
||||||
|
190,17
|
||||||
|
161,511
|
||||||
|
492,364
|
||||||
|
435,131
|
||||||
|
1041,177
|
||||||
|
996,304
|
||||||
|
902,670
|
||||||
|
863,364
|
||||||
|
137,362
|
||||||
|
1156,371
|
||||||
|
599,654
|
||||||
|
17,82
|
||||||
|
1010,96
|
||||||
|
907,767
|
||||||
|
411,124
|
||||||
|
828,523
|
||||||
|
354,768
|
||||||
|
1275,464
|
||||||
|
701,163
|
||||||
|
887,253
|
||||||
|
291,283
|
||||||
|
343,660
|
||||||
|
1067,355
|
||||||
|
189,219
|
||||||
|
1198,214
|
||||||
|
661,579
|
||||||
|
1149,383
|
||||||
|
616,222
|
||||||
|
1164,68
|
||||||
|
517,577
|
||||||
|
1064,397
|
||||||
|
1009,129
|
||||||
|
505,806
|
||||||
|
1021,450
|
||||||
|
326,215
|
||||||
|
217,233
|
||||||
|
725,318
|
||||||
|
353,129
|
||||||
|
1079,385
|
||||||
|
95,161
|
||||||
|
669,424
|
||||||
|
693,674
|
||||||
|
243,131
|
||||||
|
823,375
|
||||||
|
398,654
|
||||||
|
1173,362
|
||||||
|
581,481
|
||||||
|
949,124
|
||||||
|
652,58
|
||||||
|
731,543
|
||||||
|
420,219
|
||||||
|
514,635
|
||||||
|
156,707
|
||||||
|
473,724
|
||||||
|
750,674
|
||||||
|
890,3
|
||||||
|
371,306
|
||||||
|
817,686
|
||||||
|
252,747
|
||||||
|
1227,763
|
||||||
|
1195,617
|
||||||
|
300,14
|
||||||
|
475,66
|
||||||
|
658,58
|
||||||
|
773,282
|
||||||
|
1049,703
|
||||||
|
1084,728
|
||||||
|
377,719
|
||||||
|
142,232
|
||||||
|
35,136
|
||||||
|
508,68
|
||||||
|
408,240
|
||||||
|
174,207
|
||||||
|
649,233
|
||||||
|
666,348
|
||||||
|
1223,704
|
||||||
|
1016,810
|
||||||
|
1148,863
|
||||||
|
935,485
|
||||||
|
823,410
|
||||||
|
157,138
|
||||||
|
673,52
|
||||||
|
326,679
|
||||||
|
482,523
|
||||||
|
325,215
|
||||||
|
1300,870
|
||||||
|
189,577
|
||||||
|
311,355
|
||||||
|
1230,497
|
||||||
|
559,733
|
||||||
|
1141,290
|
||||||
|
661,851
|
||||||
|
1077,766
|
||||||
|
638,318
|
||||||
|
329,47
|
||||||
|
410,654
|
||||||
|
965,530
|
||||||
|
1156,75
|
||||||
|
537,835
|
||||||
|
867,528
|
||||||
|
1129,766
|
||||||
|
1017,322
|
||||||
|
517,274
|
||||||
|
984,215
|
||||||
|
485,439
|
||||||
|
74,75
|
||||||
|
1007,732
|
||||||
|
1174,488
|
||||||
|
611,588
|
||||||
|
209,354
|
||||||
|
658,612
|
||||||
|
701,51
|
||||||
|
997,351
|
||||||
|
817,208
|
||||||
|
855,184
|
||||||
|
957,129
|
||||||
|
808,886
|
||||||
|
433,52
|
||||||
|
179,389
|
||||||
|
1215,409
|
||||||
|
37,892
|
||||||
|
966,80
|
||||||
|
828,819
|
||||||
|
867,890
|
||||||
|
465,129
|
||||||
|
885,389
|
||||||
|
699,140
|
||||||
|
987,779
|
||||||
|
954,366
|
||||||
|
410,581
|
||||||
|
1215,787
|
||||||
|
423,485
|
||||||
|
1164,800
|
||||||
|
149,116
|
||||||
|
1193,56
|
||||||
|
102,494
|
||||||
|
1310,79
|
||||||
|
146,352
|
||||||
|
1185,444
|
||||||
|
766,837
|
||||||
|
492,639
|
||||||
|
639,59
|
||||||
|
303,610
|
||||||
|
771,452
|
||||||
|
288,0
|
||||||
|
981,266
|
||||||
|
915,597
|
||||||
|
1309,852
|
||||||
|
1183,448
|
||||||
|
73,413
|
||||||
|
637,52
|
||||||
|
219,546
|
||||||
|
835,828
|
||||||
|
475,57
|
||||||
|
1028,240
|
||||||
|
1275,894
|
||||||
|
1294,80
|
||||||
|
408,670
|
||||||
|
443,80
|
||||||
|
70,285
|
||||||
|
885,32
|
||||||
|
557,712
|
||||||
|
403,319
|
||||||
|
1121,577
|
||||||
|
912,667
|
||||||
|
587,694
|
||||||
|
420,675
|
||||||
|
935,409
|
||||||
|
739,842
|
||||||
|
17,394
|
||||||
|
269,177
|
||||||
|
154,75
|
||||||
|
326,665
|
||||||
|
818,255
|
||||||
|
1136,655
|
||||||
|
277,719
|
||||||
|
426,234
|
||||||
|
192,757
|
||||||
|
887,288
|
||||||
|
609,242
|
||||||
|
468,635
|
||||||
|
1133,296
|
||||||
|
985,14
|
||||||
|
1141,455
|
||||||
|
310,576
|
||||||
|
520,192
|
||||||
|
52,416
|
||||||
|
1305,579
|
||||||
|
1164,352
|
||||||
|
835,884
|
||||||
|
338,499
|
||||||
|
818,675
|
||||||
|
628,541
|
||||||
|
656,893
|
||||||
|
1300,655
|
||||||
|
32,203
|
||||||
|
597,717
|
||||||
|
77,689
|
||||||
|
865,506
|
||||||
|
743,586
|
||||||
|
303,732
|
||||||
|
221,22
|
||||||
|
1072,175
|
||||||
|
877,872
|
||||||
|
391,840
|
||||||
|
174,168
|
||||||
|
30,438
|
||||||
|
669,779
|
||||||
|
1297,305
|
||||||
|
572,654
|
||||||
|
989,627
|
||||||
|
1159,878
|
||||||
|
657,656
|
||||||
|
395,373
|
||||||
|
823,36
|
||||||
|
1089,394
|
||||||
|
836,80
|
||||||
|
490,173
|
||||||
|
570,537
|
||||||
|
954,528
|
||||||
|
559,161
|
||||||
|
691,448
|
||||||
|
836,542
|
||||||
|
1309,91
|
||||||
|
1243,382
|
||||||
|
977,267
|
||||||
|
1067,131
|
||||||
|
641,95
|
||||||
|
719,54
|
||||||
|
739,124
|
||||||
|
935,284
|
||||||
|
325,490
|
||||||
|
354,686
|
||||||
|
989,674
|
||||||
|
1079,857
|
||||||
|
927,411
|
||||||
|
967,668
|
||||||
|
1243,64
|
||||||
|
1010,129
|
||||||
|
1067,763
|
||||||
|
474,352
|
||||||
|
572,805
|
||||||
|
490,339
|
||||||
|
517,620
|
||||||
|
1174,406
|
||||||
|
547,452
|
||||||
|
487,823
|
||||||
|
1213,182
|
||||||
|
475,854
|
||||||
|
970,590
|
||||||
|
162,479
|
||||||
|
83,696
|
||||||
|
279,732
|
||||||
|
1260,232
|
||||||
|
761,501
|
||||||
|
330,388
|
||||||
|
321,698
|
||||||
|
325,355
|
||||||
|
551,273
|
||||||
|
1096,774
|
||||||
|
172,371
|
||||||
|
443,53
|
||||||
|
493,208
|
||||||
|
343,234
|
||||||
|
1062,40
|
||||||
|
231,409
|
||||||
|
793,577
|
||||||
|
269,470
|
||||||
|
298,57
|
||||||
|
845,35
|
||||||
|
45,724
|
||||||
|
154,523
|
||||||
|
602,80
|
||||||
|
480,278
|
||||||
|
947,283
|
||||||
|
924,82
|
||||||
|
221,394
|
||||||
|
1277,668
|
||||||
|
591,54
|
||||||
|
965,766
|
||||||
|
259,373
|
||||||
|
179,255
|
||||||
|
175,878
|
||||||
|
966,814
|
||||||
|
246,497
|
||||||
|
679,605
|
||||||
|
50,214
|
||||||
|
1022,894
|
||||||
|
1310,563
|
||||||
|
1067,539
|
||||||
|
385,768
|
||||||
|
217,661
|
||||||
|
509,842
|
||||||
|
1223,756
|
||||||
|
1078,30
|
||||||
|
0,115
|
||||||
|
656,331
|
||||||
|
238,175
|
||||||
|
915,81
|
||||||
|
231,606
|
||||||
|
1150,170
|
||||||
|
1154,187
|
||||||
|
979,151
|
||||||
|
587,107
|
||||||
|
162,890
|
||||||
|
1243,691
|
||||||
|
146,542
|
||||||
|
1146,343
|
||||||
|
169,604
|
||||||
|
192,416
|
||||||
|
1277,124
|
||||||
|
402,523
|
||||||
|
95,122
|
||||||
|
1064,654
|
||||||
|
740,537
|
||||||
|
492,667
|
||||||
|
109,681
|
||||||
|
750,416
|
||||||
|
180,542
|
||||||
|
1243,830
|
||||||
|
821,873
|
||||||
|
333,579
|
||||||
|
323,779
|
||||||
|
750,220
|
||||||
|
1258,416
|
||||||
|
316,395
|
||||||
|
1267,140
|
||||||
|
657,152
|
||||||
|
773,838
|
||||||
|
251,319
|
||||||
|
30,456
|
||||||
|
654,563
|
||||||
|
965,364
|
||||||
|
475,619
|
||||||
|
167,858
|
||||||
|
825,455
|
||||||
|
482,371
|
||||||
|
406,264
|
||||||
|
1010,686
|
||||||
|
1051,736
|
||||||
|
311,884
|
||||||
|
179,505
|
||||||
|
391,812
|
||||||
|
945,444
|
||||||
|
628,577
|
||||||
|
411,476
|
||||||
|
300,129
|
||||||
|
1066,285
|
||||||
|
818,639
|
||||||
|
234,495
|
||||||
|
221,842
|
||||||
|
490,113
|
||||||
|
914,366
|
||||||
|
361,674
|
||||||
|
127,448
|
||||||
|
413,107
|
||||||
|
919,82
|
||||||
|
93,576
|
||||||
|
87,704
|
||||||
|
740,817
|
||||||
|
1041,470
|
||||||
|
708,277
|
||||||
|
637,842
|
||||||
|
889,576
|
||||||
|
1136,726
|
||||||
|
474,814
|
||||||
|
721,154
|
||||||
|
1293,82
|
||||||
|
85,746
|
||||||
|
982,439
|
||||||
|
259,693
|
||||||
|
1054,206
|
||||||
|
469,385
|
||||||
|
751,409
|
||||||
|
83,322
|
||||||
|
1089,22
|
||||||
|
947,856
|
||||||
|
473,170
|
||||||
|
1077,318
|
||||||
|
1131,639
|
||||||
|
959,386
|
||||||
|
1000,318
|
||||||
|
1148,754
|
||||||
|
639,660
|
||||||
|
1258,366
|
||||||
|
67,243
|
||||||
|
1,742
|
||||||
|
1019,283
|
||||||
|
1051,61
|
||||||
|
1141,220
|
||||||
|
423,470
|
||||||
|
845,274
|
||||||
|
897,787
|
||||||
|
1198,662
|
||||||
|
383,483
|
||||||
|
243,539
|
||||||
|
403,457
|
||||||
|
619,448
|
||||||
|
602,478
|
||||||
|
256,688
|
||||||
|
443,890
|
||||||
|
1205,88
|
||||||
|
1145,208
|
||||||
|
820,115
|
||||||
|
489,873
|
||||||
|
1243,200
|
||||||
|
354,577
|
||||||
|
411,91
|
||||||
|
999,350
|
||||||
|
765,728
|
||||||
|
1309,763
|
||||||
|
219,628
|
||||||
|
1,91
|
||||||
|
311,226
|
||||||
|
691,136
|
||||||
|
161,208
|
||||||
|
1081,389
|
||||||
|
1021,140
|
||||||
|
149,477
|
||||||
|
408,423
|
||||||
|
897,107
|
||||||
|
514,315
|
||||||
|
47,60
|
||||||
|
311,579
|
||||||
|
956,126
|
||||||
|
380,864
|
||||||
|
890,654
|
||||||
|
233,576
|
||||||
|
52,478
|
||||||
|
751,733
|
||||||
|
1131,406
|
||||||
|
1275,731
|
||||||
|
902,240
|
||||||
|
528,628
|
||||||
|
|
||||||
|
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
|
172
13/main.cpp
Normal file
172
13/main.cpp
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
#include <algorithm>
|
||||||
|
#include <deque>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <unordered_set>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
using Folds = std::vector<std::pair<bool, size_t>>;
|
||||||
|
|
||||||
|
class Paper {
|
||||||
|
public:
|
||||||
|
Paper() = default;
|
||||||
|
~Paper() = default;
|
||||||
|
|
||||||
|
void addPoint(size_t x, size_t y) {
|
||||||
|
bool resizeX = false;
|
||||||
|
if (y >= _dots.size()) {
|
||||||
|
_dots.resize(y + 1);
|
||||||
|
_height = y + 1;
|
||||||
|
resizeX = true;
|
||||||
|
}
|
||||||
|
if (resizeX || x >= _dots[0].size()) {
|
||||||
|
auto newX = x >= _width ? x + 1 : _width;
|
||||||
|
for (auto &line : _dots) {
|
||||||
|
line.resize(newX);
|
||||||
|
}
|
||||||
|
_width = newX;
|
||||||
|
}
|
||||||
|
_dots[y][x] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void foldY(size_t y) {
|
||||||
|
for (size_t i = 1; i < _height - y; i++) {
|
||||||
|
for (size_t j = 0; j < _width; j++) {
|
||||||
|
if (_dots[y + i][j]) {
|
||||||
|
_dots[y - i][j] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_height = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
void foldX(size_t x) {
|
||||||
|
for (size_t i = 1; i < _width - x; i++) {
|
||||||
|
for (size_t j = 0; j < _height; j++) {
|
||||||
|
if (_dots[j][x + i]) {
|
||||||
|
_dots[j][x - i] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_width = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
void printPaper() {
|
||||||
|
for (size_t i = 0; i < _height; i++) {
|
||||||
|
for (size_t j = 0; j < _width; j++) {
|
||||||
|
std::cout << (_dots[i][j] ? '#' : ' ');
|
||||||
|
}
|
||||||
|
std::cout << std::endl;
|
||||||
|
}
|
||||||
|
std::cout << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t getDots() {
|
||||||
|
size_t dots = 0;
|
||||||
|
for (size_t i = 0; i < _height; i++) {
|
||||||
|
for (size_t j = 0; j < _width; j++) {
|
||||||
|
if (_dots[i][j]) {
|
||||||
|
dots++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dots;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::vector<std::vector<bool>> _dots{};
|
||||||
|
size_t _width;
|
||||||
|
size_t _height;
|
||||||
|
};
|
||||||
|
|
||||||
|
std::pair<Paper, Folds> getPaperAndFolds(const std::string &file_name) {
|
||||||
|
Paper paper{};
|
||||||
|
Folds folds{};
|
||||||
|
|
||||||
|
std::ifstream file(file_name);
|
||||||
|
std::string str;
|
||||||
|
bool isFold = false;
|
||||||
|
while (std::getline(file, str)) {
|
||||||
|
if (str.empty()) {
|
||||||
|
isFold = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
std::stringstream ss(str);
|
||||||
|
if (!isFold) {
|
||||||
|
size_t x, y;
|
||||||
|
char tmp;
|
||||||
|
ss >> x;
|
||||||
|
ss >> tmp;
|
||||||
|
ss >> y;
|
||||||
|
paper.addPoint(x, y);
|
||||||
|
} else {
|
||||||
|
std::string tmp;
|
||||||
|
char tmp_char;
|
||||||
|
bool isX = false;
|
||||||
|
size_t tmp_num;
|
||||||
|
ss >> tmp;
|
||||||
|
ss >> tmp;
|
||||||
|
ss >> tmp_char;
|
||||||
|
if (tmp_char == 'x') {
|
||||||
|
isX = true;
|
||||||
|
}
|
||||||
|
ss >> tmp_char;
|
||||||
|
ss >> tmp_num;
|
||||||
|
folds.emplace_back(isX, tmp_num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return { paper, folds };
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t part1(Paper &paper, Folds &folds, bool print) {
|
||||||
|
if (print) {
|
||||||
|
paper.printPaper();
|
||||||
|
}
|
||||||
|
if (folds[0].first) {
|
||||||
|
paper.foldX(folds[0].second);
|
||||||
|
} else {
|
||||||
|
paper.foldY(folds[0].second);
|
||||||
|
}
|
||||||
|
if (print) {
|
||||||
|
std::cout << "-----------" << std::endl;
|
||||||
|
paper.printPaper();
|
||||||
|
}
|
||||||
|
return paper.getDots();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t part2(Paper &paper, Folds &folds, bool print) {
|
||||||
|
for (size_t i = 1; i < folds.size(); i++) {
|
||||||
|
if (folds[i].first) {
|
||||||
|
paper.foldX(folds[i].second);
|
||||||
|
} else {
|
||||||
|
paper.foldY(folds[i].second);
|
||||||
|
}
|
||||||
|
if (print) {
|
||||||
|
std::cout << "-----------" << std::endl;
|
||||||
|
paper.printPaper();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return paper.getDots();
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
if (argc < 2) {
|
||||||
|
std::cerr << "You must provide input file!" << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
auto paper_and_folds = getPaperAndFolds(argv[1]);
|
||||||
|
auto &paper = paper_and_folds.first;
|
||||||
|
auto &folds = paper_and_folds.second;
|
||||||
|
|
||||||
|
std::cout << "There are \033[91;1m" << std::endl
|
||||||
|
<< part1(paper, folds, argc > 2)
|
||||||
|
<< "\033[0m dots after the first fold." << std::endl;
|
||||||
|
|
||||||
|
part2(paper, folds, argc > 2);
|
||||||
|
std::cout << "The resulting code is:" << std::endl << "\033[91;1m";
|
||||||
|
paper.printPaper();
|
||||||
|
std::cout << "\033[0m" << std::flush;
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user