Day 19: Add C solution
This commit is contained in:
parent
4e22e92c78
commit
7a2aa865cc
2 changed files with 1078 additions and 0 deletions
949
19/input.txt
Normal file
949
19/input.txt
Normal file
|
@ -0,0 +1,949 @@
|
|||
--- scanner 0 ---
|
||||
-731,-763,-425
|
||||
832,-512,-437
|
||||
571,657,-514
|
||||
594,551,-569
|
||||
-604,638,718
|
||||
-536,524,776
|
||||
629,721,-564
|
||||
-623,-444,440
|
||||
-708,-610,437
|
||||
550,-524,759
|
||||
355,515,510
|
||||
-683,877,-615
|
||||
763,-622,-365
|
||||
-833,-795,-362
|
||||
-663,840,-668
|
||||
-676,876,-848
|
||||
7,-92,-35
|
||||
560,-560,695
|
||||
-559,539,599
|
||||
528,-504,779
|
||||
-709,-874,-390
|
||||
457,445,563
|
||||
841,-410,-363
|
||||
-742,-511,374
|
||||
422,463,367
|
||||
|
||||
--- scanner 1 ---
|
||||
598,477,221
|
||||
687,-702,-850
|
||||
-586,-650,-945
|
||||
-588,-636,-820
|
||||
-676,-819,603
|
||||
431,-621,738
|
||||
-790,449,456
|
||||
339,566,-635
|
||||
386,708,-671
|
||||
466,672,-647
|
||||
245,-629,714
|
||||
-674,520,398
|
||||
-20,-191,-108
|
||||
624,398,329
|
||||
-712,486,-889
|
||||
-851,477,396
|
||||
-791,580,-833
|
||||
627,330,296
|
||||
623,-679,-824
|
||||
-859,-833,629
|
||||
697,-847,-874
|
||||
-463,-586,-905
|
||||
-607,554,-853
|
||||
-789,-836,551
|
||||
-168,-4,-10
|
||||
413,-642,724
|
||||
|
||||
--- scanner 2 ---
|
||||
676,816,-834
|
||||
614,746,-853
|
||||
-592,-743,-408
|
||||
-72,47,-39
|
||||
-744,-404,762
|
||||
444,-703,786
|
||||
753,-784,-474
|
||||
-534,-783,-416
|
||||
735,717,-765
|
||||
568,482,582
|
||||
-343,434,-675
|
||||
-488,758,370
|
||||
545,517,368
|
||||
-489,888,446
|
||||
-642,-821,-498
|
||||
-351,372,-463
|
||||
384,-705,874
|
||||
-827,-527,719
|
||||
624,-720,837
|
||||
88,-28,74
|
||||
503,604,524
|
||||
-640,-593,761
|
||||
-419,427,-552
|
||||
690,-818,-490
|
||||
-353,831,437
|
||||
650,-734,-583
|
||||
|
||||
--- scanner 3 ---
|
||||
-561,681,-898
|
||||
-696,-781,-955
|
||||
674,322,-753
|
||||
-631,640,-859
|
||||
421,399,364
|
||||
-559,-639,519
|
||||
451,-574,320
|
||||
-599,-747,467
|
||||
-813,515,442
|
||||
809,328,-802
|
||||
478,-579,460
|
||||
-710,-656,-826
|
||||
455,-597,-612
|
||||
-600,-812,-818
|
||||
555,-700,367
|
||||
593,379,413
|
||||
382,-629,-639
|
||||
810,259,-767
|
||||
-46,21,-86
|
||||
-662,548,550
|
||||
-618,-569,546
|
||||
-710,453,457
|
||||
-805,672,-885
|
||||
479,482,472
|
||||
444,-658,-572
|
||||
75,-100,-5
|
||||
|
||||
--- scanner 4 ---
|
||||
-720,-688,-429
|
||||
75,21,146
|
||||
-524,-443,905
|
||||
-455,739,547
|
||||
28,-141,13
|
||||
-697,-360,919
|
||||
826,-631,876
|
||||
-556,623,540
|
||||
710,450,-593
|
||||
-545,-345,887
|
||||
697,394,-509
|
||||
767,-745,773
|
||||
875,-803,856
|
||||
614,-573,-535
|
||||
542,624,862
|
||||
-794,439,-772
|
||||
561,-428,-543
|
||||
-746,370,-754
|
||||
-683,-626,-394
|
||||
469,634,823
|
||||
-628,431,-669
|
||||
-754,-741,-370
|
||||
741,613,-533
|
||||
489,522,847
|
||||
-374,623,575
|
||||
664,-373,-571
|
||||
|
||||
--- scanner 5 ---
|
||||
699,-825,730
|
||||
537,-594,-346
|
||||
346,566,583
|
||||
-631,-481,703
|
||||
-787,-523,790
|
||||
859,752,-606
|
||||
585,-767,662
|
||||
424,-689,-351
|
||||
-648,384,-472
|
||||
684,-648,707
|
||||
-709,511,419
|
||||
-683,421,-534
|
||||
-38,84,173
|
||||
-707,350,-419
|
||||
-342,-793,-586
|
||||
765,684,-628
|
||||
-573,-546,825
|
||||
493,-563,-373
|
||||
-785,510,549
|
||||
701,831,-589
|
||||
-718,375,476
|
||||
-335,-697,-642
|
||||
383,619,603
|
||||
-293,-795,-521
|
||||
347,799,590
|
||||
117,6,18
|
||||
|
||||
--- scanner 6 ---
|
||||
-716,-702,538
|
||||
795,547,748
|
||||
-711,527,-540
|
||||
601,413,-940
|
||||
-863,-529,-512
|
||||
388,-501,-871
|
||||
-723,-534,-539
|
||||
787,759,810
|
||||
-637,-524,557
|
||||
719,670,755
|
||||
300,-440,423
|
||||
580,395,-842
|
||||
-816,-655,-616
|
||||
345,-571,505
|
||||
554,-554,-934
|
||||
-633,593,601
|
||||
-741,560,752
|
||||
547,-535,-827
|
||||
753,381,-925
|
||||
359,-597,479
|
||||
-819,444,-482
|
||||
10,13,-72
|
||||
-664,-594,498
|
||||
-770,424,-654
|
||||
-726,498,649
|
||||
|
||||
--- scanner 7 ---
|
||||
-582,-761,459
|
||||
-453,-839,-862
|
||||
804,-878,437
|
||||
-612,749,581
|
||||
436,398,564
|
||||
-487,-795,-703
|
||||
807,842,-463
|
||||
750,-880,275
|
||||
-549,511,-891
|
||||
718,787,-531
|
||||
145,-81,-100
|
||||
-503,-738,369
|
||||
-600,814,464
|
||||
429,-893,-497
|
||||
-599,645,571
|
||||
-540,-758,410
|
||||
718,-866,393
|
||||
461,-908,-649
|
||||
-523,537,-905
|
||||
595,780,-455
|
||||
-506,-902,-696
|
||||
417,468,502
|
||||
505,497,623
|
||||
12,47,-20
|
||||
-392,455,-950
|
||||
443,-810,-670
|
||||
|
||||
--- scanner 8 ---
|
||||
53,162,-22
|
||||
967,695,948
|
||||
770,-615,-548
|
||||
-670,-668,425
|
||||
968,599,931
|
||||
956,564,873
|
||||
-402,599,-642
|
||||
-440,-235,-401
|
||||
840,-611,-438
|
||||
684,602,-426
|
||||
609,-449,832
|
||||
691,788,-464
|
||||
-498,984,913
|
||||
895,-586,-503
|
||||
-501,913,878
|
||||
167,129,170
|
||||
695,623,-587
|
||||
493,-550,825
|
||||
-523,556,-616
|
||||
-368,-412,-433
|
||||
-478,-443,-393
|
||||
-7,18,134
|
||||
-390,903,852
|
||||
-353,475,-643
|
||||
609,-631,797
|
||||
-691,-717,496
|
||||
-674,-800,467
|
||||
|
||||
--- scanner 9 ---
|
||||
523,-356,773
|
||||
-764,463,-560
|
||||
-425,-730,874
|
||||
668,-366,749
|
||||
728,-640,-825
|
||||
67,173,60
|
||||
903,419,-683
|
||||
-787,551,-542
|
||||
-403,-811,707
|
||||
889,413,-586
|
||||
749,-622,-839
|
||||
-763,407,-508
|
||||
741,-808,-815
|
||||
-699,745,628
|
||||
-523,-387,-566
|
||||
-489,-747,745
|
||||
-606,801,513
|
||||
-724,-387,-543
|
||||
-647,-369,-544
|
||||
-682,846,572
|
||||
658,516,448
|
||||
518,532,446
|
||||
460,523,469
|
||||
94,-8,-68
|
||||
885,388,-755
|
||||
691,-430,723
|
||||
|
||||
--- scanner 10 ---
|
||||
632,619,803
|
||||
-337,-640,-546
|
||||
746,-937,-943
|
||||
-81,54,-168
|
||||
821,-857,548
|
||||
706,756,751
|
||||
683,-855,672
|
||||
-733,363,-817
|
||||
-615,381,-906
|
||||
-584,435,-808
|
||||
-329,-782,-669
|
||||
586,461,-730
|
||||
659,730,711
|
||||
-493,496,495
|
||||
766,-822,-830
|
||||
-338,-687,-635
|
||||
-589,-913,412
|
||||
721,-864,422
|
||||
-601,-806,278
|
||||
397,451,-676
|
||||
-10,-104,0
|
||||
-604,404,408
|
||||
487,463,-794
|
||||
775,-762,-933
|
||||
-602,583,413
|
||||
-461,-925,315
|
||||
|
||||
--- scanner 11 ---
|
||||
-746,899,-576
|
||||
407,869,433
|
||||
-547,-309,328
|
||||
-416,-384,339
|
||||
-316,-483,-310
|
||||
399,485,-678
|
||||
698,-432,802
|
||||
-46,-77,89
|
||||
-648,857,-455
|
||||
-726,877,401
|
||||
-478,-429,-312
|
||||
-744,850,-511
|
||||
608,-772,-282
|
||||
433,544,-625
|
||||
629,-790,-380
|
||||
-729,896,666
|
||||
525,784,494
|
||||
-451,-326,327
|
||||
46,69,-60
|
||||
359,887,502
|
||||
470,509,-563
|
||||
-434,-515,-324
|
||||
456,-804,-297
|
||||
-788,819,534
|
||||
779,-460,686
|
||||
597,-425,686
|
||||
|
||||
--- scanner 12 ---
|
||||
363,-267,559
|
||||
256,-401,547
|
||||
-772,-682,-877
|
||||
314,-661,-725
|
||||
19,64,-38
|
||||
-676,-711,473
|
||||
-685,590,-796
|
||||
-833,-770,417
|
||||
-719,-516,-940
|
||||
529,557,295
|
||||
387,680,287
|
||||
-625,644,776
|
||||
244,-304,419
|
||||
347,841,-808
|
||||
407,944,-817
|
||||
-702,-725,499
|
||||
-173,172,-77
|
||||
-738,-523,-833
|
||||
-613,761,711
|
||||
-722,549,-776
|
||||
232,954,-788
|
||||
-643,639,-799
|
||||
312,-537,-863
|
||||
305,-411,-763
|
||||
482,646,296
|
||||
-626,751,607
|
||||
|
||||
--- scanner 13 ---
|
||||
292,-495,571
|
||||
651,919,779
|
||||
-175,-32,46
|
||||
-939,696,356
|
||||
-690,411,-464
|
||||
-384,-810,562
|
||||
-785,-685,-485
|
||||
-795,451,-566
|
||||
773,-408,-583
|
||||
-906,399,-435
|
||||
781,-531,-441
|
||||
-455,-767,470
|
||||
772,-497,-536
|
||||
357,-612,559
|
||||
-950,531,445
|
||||
-455,-745,448
|
||||
595,860,622
|
||||
649,453,-298
|
||||
-917,726,512
|
||||
-20,152,68
|
||||
-778,-675,-648
|
||||
-763,-609,-482
|
||||
509,416,-417
|
||||
569,874,648
|
||||
461,-602,572
|
||||
521,550,-310
|
||||
|
||||
--- scanner 14 ---
|
||||
-322,-641,670
|
||||
-349,354,-648
|
||||
-625,714,619
|
||||
812,-715,-617
|
||||
-491,-748,669
|
||||
821,527,-792
|
||||
909,550,885
|
||||
-599,728,593
|
||||
-294,286,-737
|
||||
87,-111,72
|
||||
354,-956,679
|
||||
-668,-679,-347
|
||||
425,-891,793
|
||||
862,-818,-726
|
||||
-387,-758,682
|
||||
887,580,729
|
||||
425,-913,771
|
||||
-639,-800,-435
|
||||
-356,278,-525
|
||||
-46,-32,-48
|
||||
899,577,-702
|
||||
896,-755,-710
|
||||
920,385,796
|
||||
861,469,-784
|
||||
-738,-741,-366
|
||||
-681,773,462
|
||||
|
||||
--- scanner 15 ---
|
||||
-863,636,832
|
||||
887,603,374
|
||||
-66,-152,-18
|
||||
-406,-515,-665
|
||||
-501,-905,785
|
||||
542,-591,-441
|
||||
790,520,-691
|
||||
562,-667,653
|
||||
888,610,607
|
||||
-680,319,-645
|
||||
-611,-836,857
|
||||
813,415,-771
|
||||
732,-702,658
|
||||
668,-644,708
|
||||
-784,760,860
|
||||
-380,-439,-590
|
||||
66,2,27
|
||||
-839,277,-736
|
||||
811,556,-859
|
||||
-752,658,797
|
||||
-576,-505,-555
|
||||
-746,345,-682
|
||||
543,-455,-365
|
||||
851,590,554
|
||||
-399,-914,859
|
||||
436,-477,-381
|
||||
|
||||
--- scanner 16 ---
|
||||
695,-489,-727
|
||||
-393,764,-274
|
||||
513,-404,724
|
||||
733,406,705
|
||||
788,-449,-811
|
||||
804,-386,-777
|
||||
-591,-456,576
|
||||
-715,-313,-340
|
||||
-544,907,364
|
||||
135,43,-46
|
||||
-534,924,338
|
||||
-559,835,455
|
||||
-315,762,-398
|
||||
444,-463,823
|
||||
424,417,-730
|
||||
695,626,745
|
||||
-693,-291,-340
|
||||
-378,843,-372
|
||||
425,-525,753
|
||||
454,414,-693
|
||||
-604,-446,472
|
||||
-601,-248,-269
|
||||
465,460,-686
|
||||
-592,-563,407
|
||||
749,580,604
|
||||
76,148,91
|
||||
|
||||
--- scanner 17 ---
|
||||
455,-760,-649
|
||||
670,-470,334
|
||||
569,454,608
|
||||
-358,-652,-715
|
||||
-522,413,-718
|
||||
578,-408,376
|
||||
-499,503,-639
|
||||
-510,818,236
|
||||
-465,-659,-734
|
||||
530,478,-610
|
||||
534,643,-733
|
||||
-435,-673,316
|
||||
-123,-22,19
|
||||
-481,808,411
|
||||
630,-482,500
|
||||
-421,-818,-768
|
||||
541,457,-771
|
||||
-573,-797,318
|
||||
-490,705,351
|
||||
-535,-547,309
|
||||
-502,454,-681
|
||||
385,-756,-759
|
||||
330,-731,-694
|
||||
20,-66,-142
|
||||
736,518,636
|
||||
522,517,683
|
||||
|
||||
--- scanner 18 ---
|
||||
488,-495,-482
|
||||
753,833,793
|
||||
575,545,-722
|
||||
437,-478,-662
|
||||
-380,740,-476
|
||||
-589,-884,-619
|
||||
-447,-668,405
|
||||
512,-794,706
|
||||
66,67,-124
|
||||
-535,581,492
|
||||
-383,-610,455
|
||||
555,-671,789
|
||||
-392,808,-633
|
||||
-659,-782,-672
|
||||
-477,812,-495
|
||||
741,783,712
|
||||
-641,-817,-476
|
||||
721,728,746
|
||||
-433,523,401
|
||||
513,-605,602
|
||||
613,677,-617
|
||||
188,-120,-51
|
||||
-553,-645,460
|
||||
400,-493,-422
|
||||
-598,533,370
|
||||
546,787,-712
|
||||
|
||||
--- scanner 19 ---
|
||||
680,468,656
|
||||
-895,-366,652
|
||||
-732,-787,-709
|
||||
-801,-610,-698
|
||||
451,-753,587
|
||||
600,-429,-518
|
||||
-808,-712,-655
|
||||
-85,174,-91
|
||||
381,-734,525
|
||||
480,-665,466
|
||||
-787,899,-508
|
||||
-696,913,386
|
||||
-631,962,384
|
||||
-752,920,482
|
||||
499,-445,-344
|
||||
-864,885,-423
|
||||
-821,796,-468
|
||||
523,758,-784
|
||||
56,66,25
|
||||
466,693,-633
|
||||
593,624,698
|
||||
715,682,633
|
||||
501,782,-567
|
||||
-897,-420,814
|
||||
459,-483,-564
|
||||
-883,-452,696
|
||||
|
||||
--- scanner 20 ---
|
||||
397,-456,465
|
||||
822,541,-705
|
||||
-805,-570,-623
|
||||
484,-683,-391
|
||||
-592,793,-393
|
||||
-867,737,670
|
||||
-592,-860,531
|
||||
-506,805,-437
|
||||
-881,820,497
|
||||
-560,807,-275
|
||||
432,554,511
|
||||
-12,12,62
|
||||
780,662,-607
|
||||
467,492,474
|
||||
406,-399,601
|
||||
773,606,-703
|
||||
328,-770,-433
|
||||
-893,-541,-502
|
||||
-503,-915,463
|
||||
330,-529,600
|
||||
408,439,440
|
||||
-715,-853,455
|
||||
-849,835,649
|
||||
542,-805,-456
|
||||
-129,-146,27
|
||||
-874,-471,-564
|
||||
|
||||
--- scanner 21 ---
|
||||
533,528,-756
|
||||
635,945,504
|
||||
924,-707,-431
|
||||
926,-248,469
|
||||
-453,651,678
|
||||
743,907,422
|
||||
18,113,48
|
||||
-426,-601,-285
|
||||
-587,-409,730
|
||||
-602,-306,668
|
||||
934,-310,681
|
||||
450,651,-713
|
||||
-736,841,-422
|
||||
788,-764,-440
|
||||
858,-303,558
|
||||
637,717,-755
|
||||
-701,958,-484
|
||||
685,867,414
|
||||
-219,-659,-318
|
||||
789,-634,-364
|
||||
-609,608,678
|
||||
-494,-457,635
|
||||
-602,695,664
|
||||
-672,954,-527
|
||||
-322,-639,-423
|
||||
|
||||
--- scanner 22 ---
|
||||
665,-972,357
|
||||
157,-75,5
|
||||
-645,524,554
|
||||
-661,-821,715
|
||||
552,-766,-295
|
||||
572,402,640
|
||||
534,-897,368
|
||||
-544,439,-366
|
||||
-641,414,484
|
||||
569,492,-403
|
||||
596,-852,-283
|
||||
-616,479,429
|
||||
-479,-856,715
|
||||
6,-31,124
|
||||
618,534,-400
|
||||
434,-798,-281
|
||||
593,563,629
|
||||
-537,458,-259
|
||||
-703,405,-322
|
||||
-338,-477,-268
|
||||
-580,-849,831
|
||||
758,440,633
|
||||
569,-955,356
|
||||
528,455,-423
|
||||
-490,-509,-253
|
||||
-511,-491,-351
|
||||
|
||||
--- scanner 23 ---
|
||||
388,-809,-352
|
||||
-367,872,532
|
||||
-415,-631,622
|
||||
743,-603,724
|
||||
-753,552,-643
|
||||
562,-642,690
|
||||
139,81,144
|
||||
451,-707,-384
|
||||
-381,-642,874
|
||||
383,456,849
|
||||
-411,-684,-537
|
||||
416,-685,-273
|
||||
-384,-613,831
|
||||
-338,776,398
|
||||
412,553,858
|
||||
399,591,733
|
||||
-264,869,422
|
||||
-733,574,-623
|
||||
-414,-599,-703
|
||||
674,-497,728
|
||||
48,-39,41
|
||||
389,865,-737
|
||||
-669,584,-587
|
||||
463,856,-635
|
||||
-348,-718,-636
|
||||
391,787,-525
|
||||
|
||||
--- scanner 24 ---
|
||||
-784,-392,606
|
||||
-484,366,661
|
||||
736,683,764
|
||||
-663,-858,-769
|
||||
833,-740,823
|
||||
-553,-789,-841
|
||||
821,-458,-849
|
||||
-765,-867,-843
|
||||
700,495,-558
|
||||
87,-2,28
|
||||
-325,324,752
|
||||
790,830,797
|
||||
705,-593,-833
|
||||
836,-846,942
|
||||
-418,392,698
|
||||
830,-555,-820
|
||||
1,-137,118
|
||||
870,-733,933
|
||||
662,640,-670
|
||||
-380,807,-844
|
||||
-301,683,-816
|
||||
-588,-458,571
|
||||
696,601,-489
|
||||
-412,705,-781
|
||||
-758,-468,681
|
||||
661,785,811
|
||||
|
||||
--- scanner 25 ---
|
||||
500,-759,-543
|
||||
637,-476,865
|
||||
844,524,-809
|
||||
691,-401,789
|
||||
755,549,-692
|
||||
-670,-822,952
|
||||
680,-578,858
|
||||
374,779,921
|
||||
-536,581,-571
|
||||
-543,-454,-324
|
||||
326,-743,-442
|
||||
-738,485,812
|
||||
-605,-435,-394
|
||||
-832,-768,954
|
||||
827,534,-783
|
||||
396,700,869
|
||||
-697,522,832
|
||||
-24,26,176
|
||||
-643,582,-740
|
||||
-484,-523,-423
|
||||
546,-705,-402
|
||||
-526,594,-675
|
||||
36,-123,83
|
||||
-648,564,835
|
||||
-714,-736,940
|
||||
311,819,948
|
||||
|
||||
--- scanner 26 ---
|
||||
-609,-865,-696
|
||||
-730,-552,628
|
||||
320,796,-676
|
||||
-480,446,-760
|
||||
-789,-814,-679
|
||||
752,-686,698
|
||||
86,-103,-33
|
||||
-54,-53,105
|
||||
601,-621,755
|
||||
-543,462,-794
|
||||
-688,-396,541
|
||||
312,517,722
|
||||
462,-422,-642
|
||||
426,-451,-511
|
||||
-557,806,840
|
||||
535,-710,720
|
||||
-619,825,770
|
||||
366,785,-669
|
||||
-849,-902,-681
|
||||
532,555,762
|
||||
-498,737,741
|
||||
444,-531,-542
|
||||
-665,-610,506
|
||||
323,826,-713
|
||||
-583,555,-710
|
||||
486,501,621
|
||||
|
||||
--- scanner 27 ---
|
||||
440,-949,710
|
||||
-548,356,729
|
||||
-860,601,-538
|
||||
464,-767,-452
|
||||
653,723,873
|
||||
-846,-908,-728
|
||||
440,436,-892
|
||||
-730,-861,516
|
||||
4,-62,-113
|
||||
541,420,-718
|
||||
407,-702,-603
|
||||
581,741,842
|
||||
484,727,848
|
||||
442,-791,-669
|
||||
-674,-844,415
|
||||
458,-926,798
|
||||
-923,-894,-813
|
||||
-880,-805,-768
|
||||
-93,-141,27
|
||||
-550,496,745
|
||||
400,474,-672
|
||||
-571,298,738
|
||||
-615,-768,460
|
||||
-867,703,-581
|
||||
-791,778,-527
|
||||
406,-925,854
|
||||
|
||||
--- scanner 28 ---
|
||||
647,354,627
|
||||
754,-710,818
|
||||
-32,-37,79
|
||||
-607,574,728
|
||||
706,-823,-325
|
||||
-440,806,-361
|
||||
811,-701,682
|
||||
-630,680,673
|
||||
686,-718,-428
|
||||
-604,-428,344
|
||||
627,391,574
|
||||
-907,-614,-778
|
||||
593,431,-839
|
||||
681,-777,683
|
||||
-481,-385,427
|
||||
452,429,-751
|
||||
557,452,-671
|
||||
9,100,-69
|
||||
-911,-657,-807
|
||||
-554,700,-421
|
||||
648,-856,-532
|
||||
-665,510,678
|
||||
640,355,394
|
||||
-670,-386,531
|
||||
-794,-719,-842
|
||||
-418,699,-345
|
||||
|
||||
--- scanner 29 ---
|
||||
345,-686,278
|
||||
590,445,375
|
||||
-10,-33,-90
|
||||
730,443,391
|
||||
-830,567,-808
|
||||
-329,-599,712
|
||||
-452,-400,-567
|
||||
725,770,-497
|
||||
-454,-606,663
|
||||
788,466,382
|
||||
580,746,-507
|
||||
359,-589,272
|
||||
557,720,-571
|
||||
-688,531,-855
|
||||
-520,-433,-570
|
||||
-571,763,607
|
||||
363,-758,247
|
||||
-794,543,-728
|
||||
-464,-557,820
|
||||
-121,76,13
|
||||
-599,-325,-596
|
||||
-469,671,559
|
||||
-529,590,644
|
||||
520,-828,-781
|
||||
507,-818,-949
|
||||
499,-842,-763
|
||||
|
||||
--- scanner 30 ---
|
||||
898,-783,-440
|
||||
922,437,482
|
||||
-471,-599,844
|
||||
754,-763,593
|
||||
74,-14,20
|
||||
-699,-844,-819
|
||||
905,-782,548
|
||||
7,-163,-135
|
||||
864,402,436
|
||||
-386,-589,679
|
||||
427,680,-886
|
||||
405,573,-902
|
||||
-465,303,-496
|
||||
-661,-982,-715
|
||||
-477,-574,623
|
||||
-728,245,476
|
||||
-719,-949,-922
|
||||
541,574,-826
|
||||
-570,326,-576
|
||||
781,-845,-405
|
||||
-555,248,370
|
||||
-606,305,-408
|
||||
907,-709,651
|
||||
894,-740,-469
|
||||
916,504,488
|
||||
-697,342,327
|
||||
|
||||
--- scanner 31 ---
|
||||
246,-795,-450
|
||||
689,777,-513
|
||||
-737,-654,-829
|
||||
659,821,460
|
||||
300,-430,432
|
||||
-748,371,-546
|
||||
-636,391,-522
|
||||
-451,-517,506
|
||||
555,774,586
|
||||
-738,444,-507
|
||||
-33,-82,-118
|
||||
-476,718,803
|
||||
329,-622,-464
|
||||
-576,-488,551
|
||||
231,-643,-482
|
||||
-498,868,705
|
||||
632,681,465
|
||||
-737,-472,-794
|
||||
-853,-553,-822
|
||||
631,669,-596
|
||||
5,80,24
|
||||
344,-589,466
|
||||
-506,-492,441
|
||||
517,728,-493
|
||||
-469,691,760
|
||||
237,-596,485
|
||||
|
||||
--- scanner 32 ---
|
||||
299,519,833
|
||||
-547,650,-617
|
||||
395,-426,414
|
||||
-954,-698,761
|
||||
643,-437,-429
|
||||
-715,929,492
|
||||
-555,612,-825
|
||||
-856,-676,911
|
||||
-911,-705,734
|
||||
313,846,-260
|
||||
-657,-723,-474
|
||||
-658,986,590
|
||||
267,489,859
|
||||
-714,907,743
|
||||
371,-538,434
|
||||
342,863,-343
|
||||
671,-321,-510
|
||||
-592,-668,-449
|
||||
-702,-598,-445
|
||||
-134,142,-43
|
||||
-587,540,-648
|
||||
239,648,792
|
||||
356,-436,487
|
||||
678,-437,-611
|
||||
-22,23,114
|
||||
271,842,-392
|
||||
|
||||
--- scanner 33 ---
|
||||
353,649,717
|
||||
632,-572,-385
|
||||
627,-425,511
|
||||
569,-375,575
|
||||
-478,613,-778
|
||||
566,-759,-427
|
||||
420,506,769
|
||||
759,692,-309
|
||||
455,702,787
|
||||
742,512,-360
|
||||
592,-430,681
|
||||
-443,636,-564
|
||||
-678,-709,356
|
||||
744,452,-272
|
||||
-665,-529,392
|
||||
-606,857,594
|
||||
-792,-285,-709
|
||||
-685,-476,355
|
||||
39,-2,98
|
||||
-561,738,693
|
||||
-31,148,10
|
||||
-849,-421,-700
|
||||
-565,571,-622
|
||||
-538,915,708
|
||||
443,-676,-384
|
||||
-719,-420,-776
|
129
19/solution.c
Normal file
129
19/solution.c
Normal file
|
@ -0,0 +1,129 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
typedef struct beacon {
|
||||
int x,y,z;
|
||||
} beacon;
|
||||
|
||||
typedef struct scanner {
|
||||
int nbeacons, known;
|
||||
beacon *beacons;
|
||||
} scanner;
|
||||
|
||||
inline static beacon transform(beacon b, int i) {
|
||||
int x=b.x,y=b.y,z=b.z;
|
||||
#define r(n,a,b,c) case n: return (beacon){a,b,c}
|
||||
switch (i) {
|
||||
r( 0, x, y, z); r( 1, x,-y,-z); r( 2, x, z,-y); r( 3, x,-z, y);
|
||||
r( 4, y, x,-z); r( 5, y,-x, z); r( 6, y, z, x); r( 7, y,-z,-x);
|
||||
r( 8, z, x, y); r( 9, z,-x,-y); r(10, z, y,-x); r(11, z,-y, x);
|
||||
r(12,-x, y,-z); r(13,-x,-y, z); r(14,-x, z, y); r(15,-x,-z,-y);
|
||||
r(16,-y, x, z); r(17,-y,-x,-z); r(18,-y, z,-x); r(19,-y,-z, x);
|
||||
r(20,-z, x,-y); r(21,-z,-x, y); r(22,-z, y, x); r(23,-z,-y,-x);
|
||||
}
|
||||
return (beacon){0};
|
||||
}
|
||||
|
||||
inline static beacon sub(beacon a, beacon b) {
|
||||
return (beacon){a.x-b.x, a.y-b.y, a.z-b.z};
|
||||
}
|
||||
|
||||
inline static int manhattan(beacon a, beacon b) {
|
||||
return abs(a.x-b.x) + abs(a.y-b.y) + abs(a.z-b.z);
|
||||
}
|
||||
|
||||
int main() {
|
||||
scanner *scanners=NULL;
|
||||
beacon *known_beacons;
|
||||
int nscanners, known=1,knownb=0;
|
||||
getchar();
|
||||
|
||||
while(scanf("-- scanner %d ---\n",&nscanners)==1) {
|
||||
nscanners++;
|
||||
scanners=realloc(scanners,nscanners*sizeof(scanner));
|
||||
scanner *s = &scanners[nscanners-1];
|
||||
s->beacons=NULL;
|
||||
s->nbeacons=1;
|
||||
s->known=nscanners==1;
|
||||
beacon b;
|
||||
while(scanf("%i,%i,%i",&b.x,&b.y,&b.z)==3) {
|
||||
s->beacons=realloc(s->beacons,++s->nbeacons*sizeof(beacon));
|
||||
s->beacons[s->nbeacons-1]=b;
|
||||
knownb++;
|
||||
}
|
||||
memset(&s->beacons[0],0,sizeof(beacon));
|
||||
scanf("%*[^-]");
|
||||
}
|
||||
|
||||
known_beacons = malloc(knownb*sizeof(beacon));
|
||||
knownb = scanners[0].nbeacons;
|
||||
memcpy(known_beacons, scanners[0].beacons, knownb*sizeof(beacon));
|
||||
|
||||
while (known<nscanners) {
|
||||
#pragma omp parallel for schedule(dynamic,10) collapse(2)
|
||||
for (int i=0;i<nscanners;i++) {
|
||||
for (int m=0;m<24;m++) {
|
||||
if (scanners[i].known) continue;
|
||||
for(int kb=0; kb<knownb; kb++) {
|
||||
for(int tp=1;tp<scanners[i].nbeacons;tp++) {
|
||||
int candidates=0;
|
||||
beacon disp = sub(transform(scanners[i].beacons[tp],m), known_beacons[kb]);
|
||||
for (int dp=1;dp<scanners[i].nbeacons;dp++) {
|
||||
beacon c = sub(transform(scanners[i].beacons[dp],m),disp);
|
||||
for (int ckb=0;ckb<knownb;ckb++) {
|
||||
if (!memcmp(&c, &known_beacons[ckb], sizeof(beacon))){
|
||||
candidates++;
|
||||
if (candidates >= 12) {
|
||||
#pragma omp critical
|
||||
{
|
||||
beacon tmp[scanners[i].nbeacons-1];
|
||||
int ntmp=0;
|
||||
for (int kdp=1;kdp<scanners[i].nbeacons;kdp++) {
|
||||
beacon t = sub(transform(scanners[i].beacons[kdp],m),disp);
|
||||
int found=0;
|
||||
for (int kdc=0;kdc<knownb;kdc++)
|
||||
if (!memcmp(&t, &known_beacons[kdc],sizeof(beacon))) {
|
||||
found++;break;
|
||||
}
|
||||
if (!found)
|
||||
tmp[ntmp++] = t;
|
||||
}
|
||||
memcpy(known_beacons+knownb,tmp,ntmp*sizeof(beacon));
|
||||
knownb+=ntmp;
|
||||
|
||||
scanners[i].beacons[0] = (beacon){-disp.x,-disp.y,-disp.z};
|
||||
scanners[i].known=1;
|
||||
known++;
|
||||
printf("%d/%d\n",known,nscanners);
|
||||
}
|
||||
goto next;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
next:
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("Silver: %d\n",knownb-1);
|
||||
|
||||
int G=0;
|
||||
for(int i=0;i<nscanners;i++){
|
||||
for(int j=0;j<nscanners;j++) {
|
||||
int m = manhattan(scanners[i].beacons[0],scanners[j].beacons[0]);
|
||||
if (m > G) G=m;
|
||||
}
|
||||
}
|
||||
|
||||
printf("Gold: %d\n",G);
|
||||
|
||||
for(int i=0;i<nscanners;i++)
|
||||
free(scanners[i].beacons);
|
||||
|
||||
free(scanners);
|
||||
free(known_beacons);
|
||||
}
|
Loading…
Reference in a new issue