From 43d232d9243c5fc04b7f6791f1b6f976d59aa728 Mon Sep 17 00:00:00 2001 From: kageru Date: Mon, 20 Dec 2021 19:24:36 +0100 Subject: [PATCH] Day 19 parsing --- 2021/inputs/day19 | 1027 ++++++++++++++++++++++++++++++++++++++++ 2021/inputs/day19_test | 136 ++++++ 2021/src/bin/day19.rs | 53 +++ 3 files changed, 1216 insertions(+) create mode 100644 2021/inputs/day19 create mode 100644 2021/inputs/day19_test create mode 100644 2021/src/bin/day19.rs diff --git a/2021/inputs/day19 b/2021/inputs/day19 new file mode 100644 index 0000000..b480860 --- /dev/null +++ b/2021/inputs/day19 @@ -0,0 +1,1027 @@ +--- scanner 0 --- +-775,-554,-532 +43,-16,96 +-784,-551,460 +718,-337,582 +-892,-499,-569 +463,-600,-530 +-815,-637,-599 +776,-278,495 +858,-268,526 +293,497,-799 +531,-580,-430 +286,704,496 +-718,-447,453 +314,831,609 +280,497,-675 +-125,122,195 +-917,755,-729 +-728,-466,600 +-910,798,-490 +277,733,552 +-428,756,796 +-491,713,739 +-425,674,850 +469,-473,-489 +-923,625,-580 +374,459,-626 + +--- scanner 1 --- +337,-770,-686 +715,590,522 +714,-784,879 +286,-914,-728 +371,565,-546 +314,-890,-714 +336,518,-686 +-556,-575,592 +-541,750,-562 +-605,-753,-639 +-708,776,377 +736,426,566 +778,607,538 +-600,-640,772 +-125,-54,56 +35,-9,-45 +-563,609,-523 +-700,-738,-597 +-738,-900,-636 +-854,786,421 +-639,-586,745 +810,-713,806 +294,597,-553 +731,-800,785 +-781,768,547 +-590,720,-395 + +--- scanner 2 --- +-441,556,-929 +-327,708,-896 +-479,696,684 +-620,-835,781 +543,548,-776 +780,-569,-623 +72,-35,-28 +739,-671,589 +-722,-829,846 +751,-616,690 +-726,-518,-431 +614,357,-777 +820,-560,-520 +-395,593,590 +409,467,503 +-480,689,-930 +-638,-678,796 +-659,-697,-393 +-670,-521,-456 +-381,674,686 +505,478,-820 +724,-562,541 +512,487,569 +799,-727,-520 +383,626,564 + +--- scanner 3 --- +-471,-463,618 +-528,536,550 +580,589,470 +611,632,475 +-631,-616,-517 +387,908,-363 +-420,-552,711 +-596,872,-676 +558,-453,-661 +-57,3,-53 +343,898,-509 +432,-607,530 +-532,492,595 +-673,-631,-612 +-429,842,-627 +513,890,-436 +711,-464,-578 +-458,-587,707 +515,-559,625 +334,-581,608 +-670,-778,-479 +-539,593,691 +738,-518,-617 +-557,731,-654 +649,644,484 + +--- scanner 4 --- +773,-717,-634 +808,667,616 +-324,505,684 +129,-130,-61 +-775,808,-500 +-352,-815,452 +-799,666,-540 +66,54,34 +535,-677,376 +954,517,-467 +801,-678,-463 +749,572,-432 +-419,-830,362 +699,682,568 +-816,781,-501 +754,694,467 +541,-779,311 +-622,-542,-779 +-755,-542,-767 +-373,626,725 +-404,568,818 +777,-727,-350 +-663,-338,-764 +-274,-843,495 +692,-695,361 +791,545,-440 + +--- scanner 5 --- +-760,593,537 +-686,583,544 +427,-483,728 +-401,-648,-691 +-570,-596,-652 +531,634,-630 +-519,424,-468 +-729,419,-444 +-738,-441,557 +527,-382,-315 +-788,622,509 +693,567,425 +-812,-366,558 +460,-418,-286 +393,-523,622 +729,514,586 +600,-440,-304 +-741,-585,560 +511,577,-450 +501,-567,630 +-22,169,14 +-547,479,-473 +466,587,-645 +-516,-651,-761 +766,630,561 + +--- scanner 6 --- +-326,322,730 +-445,-390,376 +574,489,585 +-735,-527,-435 +-496,330,803 +91,47,-14 +-542,-548,387 +648,-569,724 +603,-590,-612 +-736,-587,-407 +-487,491,-756 +828,-581,704 +-527,-545,430 +-471,508,-693 +-768,-536,-342 +596,-524,-524 +-515,672,-714 +858,-559,735 +-370,312,876 +604,501,-272 +0,-116,153 +627,-517,-719 +446,378,612 +737,580,-314 +613,348,563 +597,533,-349 + +--- scanner 7 --- +394,-586,-661 +393,-558,-601 +-689,562,-354 +684,225,-798 +-114,-56,111 +-739,-893,597 +-565,-643,-577 +-861,-971,590 +-704,490,533 +-17,-119,-35 +361,-493,-652 +-796,-915,662 +507,388,760 +587,236,-640 +-534,-597,-598 +651,391,763 +385,-536,502 +428,-570,366 +-499,540,-276 +-597,579,-433 +470,-427,432 +726,317,762 +-683,546,506 +602,279,-643 +-526,-685,-624 +-701,405,437 + +--- scanner 8 --- +-399,844,418 +-722,-795,-540 +627,-452,885 +-443,829,419 +-747,-451,528 +556,-356,812 +408,573,-471 +633,433,707 +-620,317,-769 +547,404,848 +757,-880,-722 +-754,-872,-547 +364,498,-597 +487,536,-630 +-61,48,31 +643,-435,791 +-764,-388,544 +-152,-77,-70 +-583,-430,572 +-675,-830,-680 +-472,893,309 +-634,319,-814 +613,-829,-680 +733,-852,-708 +-486,380,-859 +567,444,728 + +--- scanner 9 --- +-477,-923,-562 +-779,-536,360 +-459,-972,-443 +-795,-519,454 +320,809,936 +419,279,-638 +-646,-969,-505 +476,281,-604 +-785,349,538 +18,6,-41 +-699,320,397 +-708,-440,433 +247,760,827 +469,-915,-835 +553,-964,-787 +-719,360,517 +291,745,826 +-603,790,-602 +-579,787,-649 +534,239,-691 +-54,-171,71 +-536,693,-708 +324,-938,-747 +431,-514,673 +612,-472,701 +595,-535,717 + +--- scanner 10 --- +-476,-681,-773 +501,743,-516 +553,756,508 +663,-627,790 +683,-639,610 +-522,743,510 +-653,-618,565 +479,763,518 +-460,346,-739 +451,791,547 +346,-660,-580 +694,-649,820 +-426,482,-782 +427,742,-441 +-559,612,389 +389,-663,-565 +498,740,-660 +-448,-621,-774 +-317,412,-697 +36,-9,7 +-760,-691,589 +-472,578,535 +335,-818,-483 +-565,-684,558 +-383,-672,-806 + +--- scanner 11 --- +410,-606,803 +449,-844,814 +383,-848,778 +-484,796,561 +-728,-606,-672 +-741,469,-674 +-478,816,785 +-597,-643,-793 +-59,1,97 +-776,367,-635 +655,637,540 +706,-844,-593 +6,-117,-25 +642,579,-392 +654,599,-572 +664,610,-362 +621,578,662 +699,-649,-624 +-664,-391,802 +-725,-496,900 +-563,-556,-647 +-679,-428,850 +-748,395,-664 +687,732,647 +-481,753,754 +633,-737,-617 + +--- scanner 12 --- +646,-480,-717 +-770,505,551 +913,318,447 +448,812,-365 +-560,667,-499 +-564,-524,-734 +-680,-549,-697 +851,263,498 +-601,-500,792 +417,-462,-695 +-617,487,-479 +-775,481,761 +549,-537,-665 +437,744,-417 +848,-770,371 +-572,-472,820 +-607,682,-434 +401,722,-491 +790,326,600 +817,-767,434 +163,39,-44 +1,-5,58 +-611,-507,718 +-627,-388,-661 +-715,510,579 +624,-764,391 + +--- scanner 13 --- +311,670,-775 +712,-733,566 +-560,-681,-278 +-51,60,110 +-700,-659,-296 +641,-514,568 +624,694,891 +470,-503,-644 +-551,763,738 +-493,-576,630 +483,676,822 +301,-451,-683 +539,697,795 +416,-448,-753 +-527,-616,736 +-627,-717,-307 +-601,-532,638 +-815,661,-730 +-478,691,870 +-750,658,-716 +446,748,-705 +-967,689,-763 +638,-658,565 +-478,615,676 +428,597,-769 + +--- scanner 14 --- +624,622,-621 +649,590,-567 +10,57,64 +394,-674,-779 +693,781,830 +-556,369,-750 +-590,410,496 +-648,-683,518 +-560,389,-781 +-29,-77,-73 +856,-788,330 +-500,371,598 +-638,-830,499 +366,-787,-652 +798,-701,389 +635,617,-580 +357,-731,-681 +-345,-433,-622 +938,-757,320 +-411,-544,-661 +-579,491,615 +141,50,-115 +-348,-487,-704 +521,745,757 +491,729,859 +-704,-823,603 +-533,382,-904 + +--- scanner 15 --- +-263,581,-415 +-281,390,-455 +916,-537,-806 +-605,382,414 +837,-450,-785 +820,-466,-879 +392,-336,728 +-632,-350,636 +-594,-512,597 +-499,-497,639 +65,78,-18 +-707,462,345 +789,668,-384 +684,328,667 +-644,442,525 +-232,625,-454 +552,397,728 +-450,-675,-592 +876,640,-488 +-494,-610,-772 +719,346,687 +420,-360,714 +-533,-664,-745 +443,-480,686 +758,684,-529 + +--- scanner 16 --- +874,677,-708 +-575,-438,574 +673,661,488 +94,-32,-47 +-444,467,-486 +-64,28,70 +-445,392,-412 +-775,648,332 +760,-684,787 +-705,733,441 +557,-393,-495 +735,590,500 +772,-816,735 +-396,-596,-436 +581,-398,-705 +843,-843,784 +765,622,-654 +-431,-557,-538 +804,674,-823 +-444,-559,537 +-447,611,-483 +586,-453,-677 +-841,690,475 +-609,-584,487 +-424,-567,-464 +676,610,517 + +--- scanner 17 --- +-457,602,-521 +-785,-705,788 +287,-452,868 +235,664,699 +408,-468,-355 +-439,580,-661 +-747,-785,826 +298,-656,818 +-559,876,501 +477,729,-620 +-108,152,68 +-783,-472,-590 +-798,-425,-655 +291,702,828 +433,-352,-392 +272,-405,-428 +240,704,825 +-468,544,-594 +245,-536,845 +-488,821,519 +575,645,-694 +-689,-747,941 +469,685,-728 +-477,793,620 +-603,-415,-610 +14,11,7 + +--- scanner 18 --- +788,552,-857 +-660,-556,795 +-557,617,662 +-25,-55,-84 +794,776,-877 +524,-673,-456 +157,-18,13 +531,-683,-530 +-302,718,-648 +547,891,435 +-481,-842,-697 +675,-802,582 +-294,841,-801 +-743,-397,792 +544,-681,545 +-672,-424,743 +608,793,330 +-486,-787,-669 +-239,779,-750 +791,745,-814 +593,841,367 +709,-656,495 +-530,631,649 +-457,-847,-487 +-525,642,608 +496,-644,-428 + +--- scanner 19 --- +-238,548,843 +842,-440,418 +-285,454,751 +799,419,-559 +719,-870,-801 +740,536,579 +807,491,-376 +-549,300,-752 +-661,-859,519 +811,577,-506 +-686,-675,576 +908,-476,414 +626,541,737 +741,-825,-767 +881,-451,656 +677,411,619 +-621,-612,-426 +32,40,20 +-251,628,740 +-587,-669,-313 +-416,346,-677 +675,-673,-842 +-709,-695,-334 +-715,-764,472 +184,-69,70 +-550,391,-735 + +--- scanner 20 --- +488,654,558 +451,888,-733 +483,888,-660 +-798,636,-780 +-717,497,622 +-643,572,623 +-665,-462,643 +596,698,550 +481,-464,-423 +-3,6,-186 +522,614,452 +438,-558,-488 +-693,-491,671 +-461,-554,-759 +-591,-452,636 +639,871,-733 +-755,621,-783 +824,-383,594 +105,51,-18 +861,-499,619 +-809,539,-938 +-646,716,620 +-481,-734,-747 +410,-375,-562 +788,-436,755 +-450,-764,-769 + +--- scanner 21 --- +-492,308,450 +-319,346,369 +-389,604,-841 +627,687,-533 +768,-378,-808 +-443,346,356 +661,279,514 +-519,-788,-739 +652,694,-527 +-688,-731,607 +481,-473,512 +457,-735,508 +750,-467,-853 +762,295,510 +772,-434,-805 +81,-10,87 +-79,-146,66 +-549,-650,-816 +517,-627,495 +621,252,457 +-586,-705,-699 +-628,647,-834 +-538,474,-847 +650,678,-718 +-588,-751,539 +-629,-624,545 + +--- scanner 22 --- +816,750,750 +413,-797,-714 +-683,-851,-281 +-915,736,410 +673,816,792 +-820,700,413 +661,584,-482 +-723,-943,-352 +361,-785,-582 +660,-698,763 +-499,-562,697 +631,-701,712 +-700,-876,-425 +574,550,-336 +-387,-534,674 +-855,686,385 +648,-760,692 +-502,464,-636 +611,419,-457 +-568,-549,721 +-52,-100,132 +-401,404,-659 +364,-868,-741 +707,680,835 +-129,-24,-46 +-438,456,-592 + +--- scanner 23 --- +-664,626,764 +388,-888,-500 +-675,507,845 +549,479,-672 +539,-610,633 +-14,70,75 +-708,742,-850 +-622,-839,-781 +-112,-80,-29 +-618,-893,873 +-863,654,-829 +-645,-770,866 +756,494,-685 +550,-569,638 +-667,-779,-675 +-771,737,-775 +564,-556,665 +290,-783,-439 +-641,-739,886 +340,-851,-485 +-585,609,884 +406,870,526 +614,566,-711 +-495,-839,-657 +436,768,510 +608,841,474 + +--- scanner 24 --- +492,-446,-368 +-847,-473,896 +-686,-645,-471 +602,-574,731 +-895,-458,859 +-621,-684,-558 +-696,660,618 +370,807,483 +-829,553,-862 +343,878,434 +425,-394,-331 +448,-454,-432 +-60,18,-53 +-671,692,564 +-479,-658,-486 +502,795,431 +-627,501,-833 +732,953,-653 +659,886,-630 +-685,665,577 +-945,-412,791 +748,-540,644 +-13,142,95 +803,861,-613 +627,-409,681 +-799,537,-760 + +--- scanner 25 --- +584,-913,-621 +-669,585,723 +-590,347,-711 +81,-101,14 +387,-872,-577 +-791,-634,-757 +781,343,-388 +-534,-464,686 +853,763,674 +-621,542,-704 +432,-838,-555 +806,585,-415 +437,-582,474 +817,347,-454 +-28,1,-89 +-644,635,558 +-798,-860,-702 +-778,-704,-654 +903,695,720 +-614,454,-638 +-467,-427,738 +-490,-528,678 +805,800,659 +644,-567,487 +579,-654,448 +-790,548,592 + +--- scanner 26 --- +423,-847,767 +653,-771,-637 +-845,-744,-484 +-806,746,-548 +-152,-123,-153 +278,-860,634 +599,-943,-691 +-531,-694,753 +-48,45,-50 +-695,665,561 +-848,-800,-459 +408,551,311 +328,488,445 +377,609,404 +471,338,-463 +-669,-733,-421 +-797,706,-651 +-804,650,513 +390,412,-574 +602,-896,-717 +-639,725,-548 +-688,-712,768 +356,-832,677 +435,333,-465 +-537,-796,818 +-750,677,662 + +--- scanner 27 --- +729,503,-479 +-517,-963,373 +-378,-582,-567 +414,-594,-678 +-559,244,-879 +-318,-621,-456 +-695,246,-838 +605,592,-466 +674,-732,730 +728,-693,703 +-542,344,-835 +-561,-994,412 +633,510,507 +-708,521,549 +585,415,424 +-398,-519,-387 +576,-632,-639 +-326,-945,413 +561,-727,-681 +45,-86,-77 +739,-776,550 +-654,543,735 +640,596,-428 +-677,680,596 +611,493,326 + +--- scanner 28 --- +-401,-616,740 +703,-826,599 +-690,-659,-687 +-348,560,910 +624,-868,732 +900,331,-443 +-484,839,-465 +-467,-528,733 +812,423,-526 +-451,630,897 +-717,-417,-662 +778,310,-469 +-651,-421,-698 +892,384,420 +-550,764,-313 +-528,798,-268 +906,-475,-374 +758,321,510 +656,-791,739 +852,-522,-279 +-403,786,917 +877,-579,-463 +-394,-421,709 +744,323,465 +105,-23,64 + +--- scanner 29 --- +-481,471,-306 +562,-724,861 +476,-793,-720 +-785,753,665 +-567,-417,-645 +-655,-633,546 +-620,-523,657 +517,-618,801 +-890,860,687 +566,930,915 +413,-718,-715 +321,-772,-632 +-680,-567,-661 +-501,453,-380 +-607,459,-359 +543,943,761 +509,902,-485 +689,-600,861 +-867,634,707 +-656,-364,571 +-775,-406,-665 +539,923,792 +520,821,-604 +599,941,-587 +-49,148,48 +-146,23,-56 + +--- scanner 30 --- +-573,-366,309 +-619,-298,359 +531,-593,583 +-820,946,424 +276,717,482 +-791,-310,-476 +-156,152,71 +504,-580,569 +268,870,359 +-752,836,-543 +380,600,-403 +-889,872,-507 +213,819,421 +739,-256,-599 +-8,44,-80 +-915,-310,-603 +276,689,-454 +-817,883,455 +499,-539,558 +752,-410,-622 +326,650,-466 +-634,-261,407 +-809,-370,-648 +732,-379,-626 +-814,926,648 +-775,839,-399 + +--- scanner 31 --- +12,9,58 +-528,-741,535 +821,-855,-688 +933,458,730 +829,-738,634 +-489,-657,-824 +774,-596,637 +-391,-745,-874 +-728,646,405 +710,-695,719 +-673,717,423 +-454,748,-617 +-432,766,-757 +895,516,845 +168,-26,-52 +573,407,-751 +597,-899,-676 +563,602,-706 +682,-790,-718 +-645,728,524 +-517,-691,758 +-396,737,-690 +-454,-776,-912 +853,420,692 +-427,-722,713 +620,422,-686 + +--- scanner 32 --- +556,-743,700 +-394,816,770 +723,-794,659 +855,406,-530 +-561,816,749 +171,-11,61 +-352,905,-776 +-259,-559,-443 +-703,-678,317 +714,560,493 +-14,166,-124 +793,-472,-412 +880,-500,-516 +-640,-698,497 +688,-812,639 +762,-456,-557 +523,559,564 +-601,-758,386 +-228,-515,-482 +722,407,-491 +644,516,455 +-277,-750,-483 +874,440,-377 +-531,943,-709 +-403,713,730 +-355,880,-720 + +--- scanner 33 --- +-622,343,490 +489,286,-639 +-98,-108,-3 +-846,381,-702 +-570,362,-701 +521,-425,-554 +674,715,760 +499,570,-635 +-611,-606,-586 +878,700,801 +373,-559,412 +401,-516,490 +538,399,-663 +-616,-819,408 +674,703,893 +437,-375,-403 +-700,-507,-575 +-604,-751,479 +-500,-758,430 +-804,286,539 +386,-426,557 +67,-103,139 +539,-440,-397 +-742,466,-703 +-574,-488,-570 +-660,232,552 + +--- scanner 34 --- +-922,-608,651 +435,-272,-755 +-479,617,-635 +-564,571,507 +322,412,743 +493,-310,-870 +-761,-376,-659 +579,-642,681 +399,-585,661 +254,423,795 +-813,-523,693 +384,-632,726 +429,439,-675 +-121,75,-1 +-658,582,-669 +-619,-431,-662 +317,534,-598 +-468,541,392 +-644,555,-656 +397,-352,-717 +267,500,-631 +-878,-384,663 +-718,-495,-744 +344,376,669 +-478,499,485 + +--- scanner 35 --- +-760,373,-598 +-714,574,383 +-499,-330,-781 +439,-375,-810 +-644,-789,695 +555,520,671 +-641,-372,-687 +323,-754,683 +-705,366,-824 +-570,-494,-743 +-704,-788,667 +453,-347,-845 +389,-712,826 +-68,12,56 +-695,-821,760 +-657,386,-668 +459,-797,717 +683,630,-428 +-641,550,490 +403,-372,-905 +735,697,-391 +-707,543,578 +675,674,-492 +51,-73,-87 +589,374,584 +720,495,621 + +--- scanner 36 --- +580,-390,-635 +524,-463,348 +338,791,497 +684,-341,-642 +-688,-469,-394 +-613,-321,-360 +562,-401,459 +610,659,-372 +-562,-720,487 +-807,357,614 +380,-450,402 +484,664,-391 +-886,390,488 +-717,-495,-378 +-128,-55,-8 +-701,598,-436 +-818,429,597 +614,790,478 +573,675,-490 +-863,636,-370 +442,792,582 +-814,648,-428 +568,-319,-703 +-560,-644,497 +23,63,84 +-638,-687,585 diff --git a/2021/inputs/day19_test b/2021/inputs/day19_test new file mode 100644 index 0000000..4e496e9 --- /dev/null +++ b/2021/inputs/day19_test @@ -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 diff --git a/2021/src/bin/day19.rs b/2021/src/bin/day19.rs new file mode 100644 index 0000000..2e08bf3 --- /dev/null +++ b/2021/src/bin/day19.rs @@ -0,0 +1,53 @@ +#![feature(test)] +extern crate test; +use aoc2021::common::*; +use itertools::Itertools; + +const DAY: usize = 19; +type Parsed = Vec; + +#[derive(Debug)] +struct Scanner { + no: usize, + coords: Vec, +} + +type ScanPoint = [isize; 3]; + +fn parse_input(raw: &str) -> Parsed { + raw.split("\n\n") + .map(|raw_scanner| { + raw_scanner.lines().skip(1).map(|l| l.split(',').map(|n| n.parse().unwrap()).collect_vec().try_into().unwrap()).collect() + }) + .enumerate() + .map(|(no, coords)| Scanner { no, coords }) + .collect() +} + +fn part1(parsed: &Parsed) -> usize { + unimplemented!() +} + +fn part2(parsed: &Parsed) -> usize { + unimplemented!() +} + +fn main() { + let input = parse_input(&read_file(DAY)); + println!("Part 1: {}", part1(&input)); + println!("Part 2: {}", part2(&input)); +} + +#[cfg(test)] +mod tests { + use super::*; + use aoc2021::*; + + const TEST_INPUT: &str = include_str!("../../inputs/day19_test"); + + test!(part1() == 0); + test!(part2() == 0); + bench!(part1() == 0); + bench!(part2() == 0); + bench_input!(Vec::len => 37); +}