:)

day8 part1

+1091
+20
input/day8.test.txt
··· 1 + 162,817,812 2 + 57,618,57 3 + 906,360,560 4 + 592,479,940 5 + 352,342,300 6 + 466,668,158 7 + 542,29,236 8 + 431,825,988 9 + 739,650,466 10 + 52,470,668 11 + 216,146,977 12 + 819,987,18 13 + 117,168,530 14 + 805,96,715 15 + 346,949,466 16 + 970,615,88 17 + 941,993,340 18 + 862,61,35 19 + 984,92,344 20 + 425,690,689
+1000
input/day8.txt
··· 1 + 19811,63901,80424 2 + 56472,26644,32079 3 + 77528,24129,29189 4 + 53533,94958,85776 5 + 93168,69326,27460 6 + 25374,91449,95696 7 + 96129,76282,72430 8 + 80100,69230,78980 9 + 63046,75012,45443 10 + 48923,26202,95974 11 + 18380,35864,5685 12 + 10377,91999,83841 13 + 18215,31413,43273 14 + 69608,47324,31546 15 + 74388,93328,70320 16 + 7488,75918,69838 17 + 3402,16390,43595 18 + 61505,84673,4512 19 + 84158,58795,66886 20 + 85461,84839,45157 21 + 55232,17224,51398 22 + 35761,77776,24081 23 + 81650,1370,1703 24 + 11297,95673,39240 25 + 25368,3794,96381 26 + 31893,59581,83142 27 + 61121,5160,19889 28 + 4829,38017,11633 29 + 51020,6358,31830 30 + 90869,94064,99116 31 + 50255,99219,43018 32 + 7581,50550,29351 33 + 59667,39449,80754 34 + 11289,71781,52195 35 + 72898,75800,49342 36 + 14519,85836,78944 37 + 75078,35968,51444 38 + 9620,19765,71878 39 + 84052,94801,28054 40 + 72618,23498,58857 41 + 78616,81248,96697 42 + 2079,22191,39236 43 + 71386,21281,24930 44 + 9154,3724,73394 45 + 61950,91606,34692 46 + 66507,60009,2528 47 + 99431,76247,79160 48 + 89693,80180,16981 49 + 34456,33695,53921 50 + 24601,81277,79889 51 + 77036,22134,45737 52 + 42069,73464,71541 53 + 56434,65127,82549 54 + 59647,90286,18929 55 + 5834,6709,55511 56 + 56513,16545,20517 57 + 4325,20798,55038 58 + 83963,59491,40901 59 + 91600,60483,98350 60 + 64239,54023,19748 61 + 18934,17655,70517 62 + 29421,1715,50292 63 + 93589,70619,21682 64 + 54809,42502,22370 65 + 85716,90285,21129 66 + 19659,4752,89967 67 + 45183,31182,26351 68 + 56478,3706,75767 69 + 76841,54463,10838 70 + 14107,1129,60689 71 + 96635,17276,59040 72 + 30691,82119,42177 73 + 88318,72067,70875 74 + 91904,83010,61959 75 + 25074,25841,51517 76 + 21112,30406,18775 77 + 8324,21828,65391 78 + 73077,47615,1276 79 + 94230,24986,33586 80 + 15618,87608,81102 81 + 92050,71735,26685 82 + 89228,79626,30622 83 + 66366,17759,51633 84 + 85322,74490,57964 85 + 17237,73526,43846 86 + 5834,12316,14166 87 + 9278,45893,96833 88 + 33627,28165,83788 89 + 86926,22237,80297 90 + 31748,12903,88689 91 + 63755,79782,86198 92 + 38772,53598,12888 93 + 2169,26610,16688 94 + 2340,75351,19483 95 + 51160,87750,31219 96 + 90519,25360,20683 97 + 78041,43468,6310 98 + 93889,76633,67582 99 + 90185,80468,69643 100 + 82915,20204,41153 101 + 38677,32451,14620 102 + 76581,22670,99977 103 + 38232,44501,58232 104 + 25188,64312,83600 105 + 28522,70590,64923 106 + 79024,25865,90440 107 + 81150,26724,21842 108 + 8567,1245,50914 109 + 81807,29752,74627 110 + 61158,76395,64935 111 + 19158,2452,6107 112 + 22118,14241,16382 113 + 24726,7286,84878 114 + 46530,89315,49229 115 + 63489,53184,77743 116 + 41806,4473,56796 117 + 55834,21351,28613 118 + 76005,84959,26713 119 + 93292,23154,84373 120 + 37327,43296,40876 121 + 81256,39939,64161 122 + 19247,33012,27994 123 + 74387,107,11889 124 + 6245,88353,18422 125 + 29900,26067,13036 126 + 28913,13816,59311 127 + 8074,37782,34953 128 + 77584,10697,86255 129 + 58554,12913,69509 130 + 86099,12682,60061 131 + 30083,72465,29376 132 + 41934,1462,40706 133 + 81846,751,7414 134 + 59573,14000,28774 135 + 86161,80881,23697 136 + 94742,64212,86778 137 + 42849,13589,56059 138 + 60876,37327,7101 139 + 64427,33129,92490 140 + 97873,3249,14341 141 + 28014,5851,85764 142 + 2221,4054,90020 143 + 6589,43790,2416 144 + 13351,62945,79616 145 + 37219,48800,65731 146 + 63672,23104,82403 147 + 64932,52688,91813 148 + 76107,80904,33639 149 + 44158,473,88251 150 + 14708,81063,33847 151 + 32692,39861,9391 152 + 447,84114,10262 153 + 33278,11518,96968 154 + 56501,45291,9608 155 + 88389,17476,31993 156 + 50797,76742,46926 157 + 21861,99835,90288 158 + 3986,78555,41383 159 + 44875,44797,86262 160 + 11526,58218,38272 161 + 75687,38352,69458 162 + 88867,96578,11311 163 + 39355,85692,85713 164 + 15477,37111,72142 165 + 95935,9393,63283 166 + 69451,12959,61205 167 + 98520,5974,70909 168 + 6144,9418,30730 169 + 96258,44445,35265 170 + 92764,32300,59606 171 + 42983,79338,74537 172 + 25798,87291,47116 173 + 41304,65610,84929 174 + 86509,6137,66583 175 + 86384,4591,79527 176 + 20475,57453,34821 177 + 80819,92747,12513 178 + 9682,27456,92563 179 + 38688,6746,62361 180 + 3682,27195,80177 181 + 72692,63496,67642 182 + 62961,39138,76992 183 + 40826,3771,16666 184 + 12359,63605,34287 185 + 40332,9457,39359 186 + 34596,86486,7009 187 + 63022,27023,96152 188 + 51637,29842,22317 189 + 87240,35421,31220 190 + 20435,81925,39081 191 + 64008,24442,49259 192 + 56973,76393,17297 193 + 87911,96543,64428 194 + 23762,34754,78689 195 + 78907,93621,99438 196 + 93331,8732,97082 197 + 68707,64659,50231 198 + 82112,55191,57667 199 + 23944,58917,50002 200 + 68230,52727,15360 201 + 75459,15864,5228 202 + 34303,80546,35999 203 + 44028,49442,16674 204 + 8150,1119,98674 205 + 22471,70273,57876 206 + 86341,13749,47137 207 + 832,59477,56492 208 + 52365,97091,14470 209 + 17545,27204,18271 210 + 44182,68155,22931 211 + 93690,90582,21197 212 + 63501,92103,2420 213 + 32868,87558,86243 214 + 93528,96090,37782 215 + 11575,26144,5553 216 + 65882,75154,90491 217 + 25960,54961,33702 218 + 41043,46190,30747 219 + 42871,69787,35877 220 + 69061,79083,24878 221 + 28661,90268,67864 222 + 10779,61821,20133 223 + 80729,63970,87035 224 + 50138,18797,81089 225 + 96077,34756,13203 226 + 67768,50801,56084 227 + 88405,74067,73882 228 + 81910,47760,23240 229 + 8535,57152,15402 230 + 25317,37540,43266 231 + 63320,85760,18110 232 + 49312,47097,76115 233 + 25651,52362,92747 234 + 71254,50808,55842 235 + 15473,83688,87161 236 + 80693,99299,35536 237 + 16511,76084,35052 238 + 13533,12597,358 239 + 59031,1091,67689 240 + 87348,82217,87376 241 + 8157,32720,71537 242 + 19009,21003,16117 243 + 82501,1887,12274 244 + 459,33618,34333 245 + 67036,4148,14892 246 + 77817,68790,36382 247 + 88282,56775,61100 248 + 82705,40354,47087 249 + 26065,66579,4970 250 + 25567,994,33845 251 + 75522,36137,27159 252 + 77746,55935,97178 253 + 1234,61523,61927 254 + 57928,92637,98933 255 + 28480,77661,67505 256 + 17306,26135,82053 257 + 74596,76509,53005 258 + 67607,59955,25511 259 + 86805,12710,78195 260 + 97785,32852,86994 261 + 9415,30864,40984 262 + 67661,5280,23530 263 + 33460,99673,16779 264 + 48100,53787,17786 265 + 73587,22520,25582 266 + 62755,22493,27384 267 + 83205,16489,4617 268 + 62309,80142,84926 269 + 80462,62062,94863 270 + 20967,53365,99542 271 + 80746,89465,8697 272 + 55951,60358,83213 273 + 73994,30449,53979 274 + 42722,17591,36224 275 + 87190,67653,76864 276 + 7538,17296,26862 277 + 36019,44938,98314 278 + 34425,34460,2079 279 + 9664,6894,65255 280 + 67328,65001,12579 281 + 36386,93580,1066 282 + 66274,91220,58226 283 + 97935,75837,76921 284 + 97292,73543,62881 285 + 76688,9307,18417 286 + 25080,82552,98645 287 + 28701,87652,36807 288 + 59340,63999,76326 289 + 51435,49596,4379 290 + 91935,73656,87221 291 + 31099,50758,81931 292 + 95994,76695,86365 293 + 8559,43271,20825 294 + 64194,13170,47376 295 + 82719,4053,4458 296 + 68153,33715,17440 297 + 86979,70992,23758 298 + 63929,14943,20735 299 + 54059,96047,67620 300 + 90430,99558,66276 301 + 31334,86285,75149 302 + 98315,23414,95838 303 + 79699,1796,24744 304 + 64662,43057,23674 305 + 82642,27541,40005 306 + 58008,96149,44469 307 + 38429,70163,25068 308 + 77752,79050,62344 309 + 54237,53644,73334 310 + 9322,59901,66138 311 + 82643,9968,38143 312 + 39518,53305,29525 313 + 71315,84108,22607 314 + 86216,90227,72144 315 + 43523,64759,83295 316 + 70047,60319,8440 317 + 62587,83506,82453 318 + 54745,7148,73053 319 + 75112,80138,10295 320 + 52206,6301,14514 321 + 86949,86347,53019 322 + 71450,84192,18337 323 + 83241,26758,50971 324 + 83111,52273,14367 325 + 86555,66442,7734 326 + 8673,10344,67356 327 + 8575,28519,94069 328 + 45843,72014,46504 329 + 20214,60294,55324 330 + 73897,84286,7063 331 + 14497,35646,33159 332 + 78742,11879,60615 333 + 24094,20685,42857 334 + 11884,29808,26234 335 + 36322,32587,91732 336 + 10712,43415,10274 337 + 7426,9808,48324 338 + 81974,7483,78316 339 + 17783,42120,43640 340 + 15854,2400,44314 341 + 42417,13879,32784 342 + 37677,29537,26927 343 + 32160,70397,59430 344 + 95276,30298,62435 345 + 84031,38093,92161 346 + 70339,16302,48638 347 + 19925,78230,19721 348 + 36181,95485,77688 349 + 26613,4084,69309 350 + 86928,29344,38194 351 + 82438,86979,31105 352 + 13508,14424,64061 353 + 1544,46188,58559 354 + 76868,79413,9985 355 + 35308,62538,54772 356 + 65083,8589,42759 357 + 60122,79164,81502 358 + 42454,99015,47153 359 + 27150,27799,45663 360 + 81832,85798,61989 361 + 96410,72345,6569 362 + 59176,37863,13799 363 + 74992,46560,93891 364 + 47147,87623,67859 365 + 9760,14366,71917 366 + 38608,43679,6314 367 + 9957,94204,39848 368 + 37872,84341,18797 369 + 10728,31641,95460 370 + 59328,25972,84127 371 + 93198,80907,90161 372 + 59793,60153,12700 373 + 47878,43038,85124 374 + 37329,22291,37297 375 + 77925,50089,19756 376 + 46332,22443,29813 377 + 97970,94929,12935 378 + 32832,37115,34996 379 + 7499,21023,92879 380 + 56041,96573,29323 381 + 75934,44899,77626 382 + 46438,55682,63742 383 + 49590,42688,46298 384 + 85039,62072,13265 385 + 2152,10437,40310 386 + 84812,37534,32959 387 + 42831,43299,34940 388 + 79833,25833,6189 389 + 17425,77,87620 390 + 70035,17028,66357 391 + 44699,93506,64133 392 + 26071,65119,16840 393 + 75801,19788,16680 394 + 2464,16223,45866 395 + 10113,2621,4243 396 + 73995,58225,1984 397 + 23547,35431,79325 398 + 44188,55903,57790 399 + 40521,67812,69740 400 + 83261,27507,50374 401 + 1145,53212,1217 402 + 78452,15661,53331 403 + 37714,32003,23524 404 + 61960,70572,34404 405 + 82392,2203,59760 406 + 83885,87292,64240 407 + 88124,42935,52255 408 + 88136,46453,30331 409 + 99617,5929,66908 410 + 84854,16773,63241 411 + 28500,63982,24453 412 + 29764,8869,7270 413 + 41654,71044,35856 414 + 49340,78914,74173 415 + 87296,66814,50584 416 + 81358,55828,6930 417 + 57557,99385,89952 418 + 81573,52002,81896 419 + 16354,41837,85135 420 + 64625,60014,36716 421 + 45985,11829,96695 422 + 31230,94212,72499 423 + 81038,28808,52029 424 + 66299,97135,39447 425 + 60436,17058,26867 426 + 26821,92712,22921 427 + 44305,86415,5331 428 + 20582,37708,74086 429 + 53105,41334,69427 430 + 55361,94123,20787 431 + 89609,54698,11286 432 + 65174,72996,89210 433 + 14462,74925,96093 434 + 369,1423,12102 435 + 81348,91522,20747 436 + 80184,17963,19284 437 + 27628,72040,8065 438 + 17476,68412,70807 439 + 60083,87171,94145 440 + 46388,56309,13161 441 + 42631,41522,2442 442 + 52667,55436,51631 443 + 36975,37301,6713 444 + 64149,46822,73948 445 + 18327,79704,31893 446 + 78555,56935,9680 447 + 60191,21720,47622 448 + 54364,1402,63657 449 + 72531,61636,61182 450 + 54775,36458,47966 451 + 21183,36917,92307 452 + 8199,27034,98741 453 + 3155,26251,34581 454 + 79986,32596,30351 455 + 94937,35979,67438 456 + 70085,23486,32284 457 + 85225,61234,93929 458 + 45241,40635,82602 459 + 33396,67124,98715 460 + 77909,71316,13352 461 + 36830,27736,36406 462 + 76321,51084,895 463 + 71062,77989,74926 464 + 61924,79668,16949 465 + 68462,19140,80662 466 + 50596,95202,14557 467 + 46215,77912,30128 468 + 28497,87737,11515 469 + 58169,44744,50107 470 + 31137,27619,70290 471 + 77881,65634,28401 472 + 52061,98481,42430 473 + 13293,83245,61313 474 + 96139,71515,47167 475 + 79353,30430,81936 476 + 36813,37397,56422 477 + 8570,94518,75911 478 + 78594,78038,96861 479 + 93356,95735,78898 480 + 23903,65596,24789 481 + 10807,85711,86308 482 + 22923,59760,70072 483 + 35343,75779,89252 484 + 37668,76222,74313 485 + 79178,40537,33196 486 + 19844,60421,18493 487 + 61456,66856,36942 488 + 30357,80858,39689 489 + 45301,72648,18283 490 + 85606,17987,99814 491 + 91773,60010,18981 492 + 85713,61096,75890 493 + 42256,5887,74972 494 + 99272,74302,994 495 + 20979,84769,45589 496 + 31699,56218,33676 497 + 41559,9163,86890 498 + 23892,27334,89475 499 + 14822,22776,10715 500 + 37667,65920,6351 501 + 32112,81968,17075 502 + 90843,17172,2673 503 + 96916,43900,55505 504 + 94957,25352,5827 505 + 7289,50474,95225 506 + 77665,76450,59127 507 + 75742,48626,95646 508 + 7591,15387,55440 509 + 22733,63473,46411 510 + 19433,62499,79181 511 + 93309,61722,70184 512 + 24379,83969,84973 513 + 16874,83921,69806 514 + 52840,61098,14578 515 + 15737,30790,68500 516 + 90187,3322,48832 517 + 2830,34450,52062 518 + 46035,9997,23146 519 + 51242,86174,73660 520 + 64461,74769,34791 521 + 9710,45256,36435 522 + 41047,19773,72003 523 + 15294,17535,55142 524 + 73757,18431,91478 525 + 74522,58511,49255 526 + 59123,67071,87838 527 + 57192,98568,69179 528 + 23435,72939,35565 529 + 25258,95498,91417 530 + 51888,32939,90519 531 + 81589,30845,8108 532 + 75496,53112,42267 533 + 99240,88793,39410 534 + 37175,50634,83343 535 + 5426,96323,45274 536 + 5771,16845,17342 537 + 67815,11937,21756 538 + 31448,92069,33611 539 + 71929,76152,73690 540 + 27221,20673,67371 541 + 83662,10295,69459 542 + 79530,50485,57181 543 + 33456,61011,45570 544 + 17392,64200,54390 545 + 86609,98501,8821 546 + 15009,95179,33540 547 + 19379,52923,47142 548 + 39624,58537,20536 549 + 44222,69386,79271 550 + 61775,97795,50366 551 + 16739,36539,75572 552 + 71437,56783,27916 553 + 95672,47904,20468 554 + 49879,2124,70882 555 + 75390,93535,98190 556 + 64921,24227,69903 557 + 78184,72258,81657 558 + 28708,44193,99168 559 + 452,79372,30788 560 + 37556,59092,16594 561 + 76882,42902,18506 562 + 76781,53697,30647 563 + 18629,22726,74081 564 + 12963,69962,18766 565 + 35016,31989,69764 566 + 83196,60514,19101 567 + 12077,96106,73134 568 + 93278,47440,69028 569 + 86532,89374,81139 570 + 97986,26301,88467 571 + 53983,62742,59081 572 + 20375,35156,2600 573 + 36730,80019,90622 574 + 26781,57491,51462 575 + 51607,3233,55344 576 + 86527,60362,70018 577 + 32612,63361,50738 578 + 95878,57913,8932 579 + 50567,83830,77679 580 + 14610,13478,80070 581 + 83756,88629,86663 582 + 75713,48667,57674 583 + 55820,90569,73614 584 + 63376,31891,14912 585 + 89521,60460,29381 586 + 79863,38559,51035 587 + 51468,91332,30691 588 + 24637,31579,22339 589 + 87532,83514,68636 590 + 28952,32941,36059 591 + 38303,64977,77598 592 + 33647,14736,87999 593 + 42735,4549,16941 594 + 6566,27990,26298 595 + 15820,36391,10265 596 + 50379,38288,47656 597 + 56743,1648,64257 598 + 70197,96759,73037 599 + 82134,16893,56994 600 + 3389,95349,15379 601 + 63765,94194,23204 602 + 45841,28949,97461 603 + 26217,48585,93864 604 + 1266,91667,34045 605 + 23078,88036,17024 606 + 33499,39651,30563 607 + 25554,18842,30273 608 + 86546,83059,81037 609 + 35753,19754,71205 610 + 40311,75499,6921 611 + 20317,6652,37344 612 + 28182,42272,70728 613 + 32903,5540,6860 614 + 76036,67776,70592 615 + 17783,60076,82378 616 + 57975,7646,1752 617 + 67874,34892,45471 618 + 34346,70294,66266 619 + 41414,77576,39882 620 + 57801,17807,71798 621 + 20349,20211,64823 622 + 14860,70205,13593 623 + 5070,73845,64482 624 + 94131,91239,75691 625 + 96784,30610,62319 626 + 41809,28299,46550 627 + 89409,81409,59341 628 + 87820,75287,68617 629 + 10649,4404,696 630 + 11784,33700,59413 631 + 73944,55344,42792 632 + 55697,72654,157 633 + 5016,69277,21926 634 + 66508,99033,44917 635 + 31425,72862,78962 636 + 89179,85001,45188 637 + 57726,64047,5739 638 + 77496,64820,64560 639 + 92417,19239,79246 640 + 58700,71320,93844 641 + 89859,80072,31222 642 + 43318,75829,23661 643 + 6017,23792,20575 644 + 83362,55569,37877 645 + 97083,45044,33220 646 + 12065,73003,70043 647 + 50518,5948,44557 648 + 57309,83963,58344 649 + 91788,95409,62983 650 + 31292,58901,22534 651 + 26532,43129,65580 652 + 19182,1280,87351 653 + 93970,6620,96527 654 + 4658,25023,8400 655 + 9077,15456,3646 656 + 22554,9994,72248 657 + 38789,20563,39619 658 + 62867,19184,34319 659 + 57598,82637,82994 660 + 64212,91682,6492 661 + 87608,66783,58765 662 + 80198,9816,87378 663 + 20054,26469,74941 664 + 82246,75648,160 665 + 4074,48052,73658 666 + 51106,9044,13290 667 + 74926,26678,18703 668 + 4993,53210,50968 669 + 82986,47086,48291 670 + 32100,28586,9809 671 + 91129,30486,25870 672 + 22497,13350,95359 673 + 14009,65738,21491 674 + 78501,71773,72361 675 + 41810,66661,25736 676 + 47075,94382,56069 677 + 50279,40907,51427 678 + 39977,50320,10036 679 + 34198,68577,63662 680 + 84518,97980,21557 681 + 56207,44939,96264 682 + 60108,61364,92726 683 + 36300,77356,81287 684 + 30075,80166,75056 685 + 89056,79654,81981 686 + 68136,59755,53159 687 + 14842,66543,97137 688 + 65814,44988,42054 689 + 88989,25007,77870 690 + 43726,16632,42865 691 + 86466,43695,5595 692 + 21836,49422,40865 693 + 49227,89854,70959 694 + 15797,73857,57588 695 + 29875,59816,72598 696 + 88454,47592,15337 697 + 89545,5687,69400 698 + 84613,32176,66828 699 + 95869,39150,67340 700 + 60875,67660,91914 701 + 76146,87023,14388 702 + 55959,11135,56069 703 + 2249,84266,91780 704 + 79180,14086,71440 705 + 63001,26614,35620 706 + 54539,18037,17309 707 + 1558,10867,88872 708 + 44899,31996,49311 709 + 41929,26066,2537 710 + 89941,86765,31971 711 + 88092,36628,34299 712 + 5682,80787,58527 713 + 96888,89602,44511 714 + 99228,44384,63071 715 + 53497,44337,52002 716 + 86233,98233,68229 717 + 51975,41192,90639 718 + 93997,31147,73228 719 + 80920,84194,70981 720 + 45797,12863,7480 721 + 70167,4134,2559 722 + 22641,8865,79038 723 + 70110,88521,38429 724 + 78889,85491,49229 725 + 12666,2698,91505 726 + 88461,12686,37429 727 + 30000,76265,74240 728 + 70372,45926,3826 729 + 66297,82641,59310 730 + 76580,24861,87559 731 + 42284,99010,44791 732 + 21376,89287,73468 733 + 22462,81305,28663 734 + 64619,17244,73971 735 + 56073,66105,23581 736 + 87024,20292,89228 737 + 77032,17755,13489 738 + 68668,36461,89034 739 + 98003,81337,38405 740 + 71767,83532,68907 741 + 93686,5125,61060 742 + 85537,42959,43046 743 + 67957,80517,32053 744 + 17729,38600,81536 745 + 70491,20300,99081 746 + 99246,53897,33878 747 + 39524,93580,17510 748 + 6972,3673,55131 749 + 15805,31783,86457 750 + 34109,98739,93119 751 + 70193,55571,8171 752 + 5887,67593,89966 753 + 11019,35736,97762 754 + 32879,57994,16752 755 + 61376,75055,48899 756 + 30930,29484,84253 757 + 64877,80684,31511 758 + 52705,13471,72054 759 + 51243,99505,19217 760 + 82483,82815,25259 761 + 77931,32937,94215 762 + 48860,133,35086 763 + 14640,73229,73489 764 + 75961,39570,20897 765 + 27338,15796,7896 766 + 1895,37430,61052 767 + 87232,58934,45914 768 + 21524,23498,17095 769 + 43125,55902,93575 770 + 80969,26254,93398 771 + 59632,17165,45845 772 + 46762,76154,73936 773 + 13867,41935,88868 774 + 65682,63921,64317 775 + 62144,60101,57769 776 + 17838,91167,73333 777 + 98363,59355,5771 778 + 82492,12654,1751 779 + 202,15862,41316 780 + 61397,47059,45142 781 + 33400,93137,88393 782 + 96214,44075,39775 783 + 42896,60476,19098 784 + 29291,1825,33872 785 + 19562,57186,86051 786 + 11559,58307,51590 787 + 7188,94277,37622 788 + 1444,73415,9850 789 + 62875,31855,38456 790 + 57024,64198,92533 791 + 44396,46599,57851 792 + 24499,16974,49274 793 + 79176,34449,47985 794 + 84121,92757,15373 795 + 32844,64343,44475 796 + 44277,12758,96990 797 + 40415,83995,17773 798 + 44477,83897,44587 799 + 87874,52552,53469 800 + 82280,9909,31546 801 + 79356,49464,95175 802 + 15218,55924,59929 803 + 9819,79704,84250 804 + 9338,82517,69606 805 + 57233,34324,53315 806 + 80048,4077,5287 807 + 96745,83896,89879 808 + 11087,81720,68852 809 + 96849,99593,1034 810 + 76625,87880,10339 811 + 72990,78200,1409 812 + 56058,45796,7719 813 + 43278,43316,8210 814 + 64985,87647,434 815 + 14108,87099,77947 816 + 66772,3555,10295 817 + 87400,73824,92134 818 + 73474,88228,76642 819 + 13497,54640,36351 820 + 4043,12369,46995 821 + 95132,1331,2069 822 + 93277,15101,98818 823 + 12397,61103,38512 824 + 10212,13631,45995 825 + 86062,41166,8039 826 + 58661,66625,52204 827 + 24474,17045,55761 828 + 85101,42605,76653 829 + 36653,30252,27214 830 + 841,29789,894 831 + 18750,79154,42505 832 + 43962,10656,30900 833 + 3813,76470,36439 834 + 93856,66682,99229 835 + 87423,57120,32218 836 + 29290,15766,91578 837 + 96475,70508,34619 838 + 2200,29714,33937 839 + 79075,40479,53800 840 + 41299,16400,91855 841 + 90648,24661,3360 842 + 87089,62732,41525 843 + 51608,75471,55763 844 + 89216,30888,64851 845 + 19103,46634,74429 846 + 43723,7451,32477 847 + 2595,11567,9371 848 + 25642,36860,66095 849 + 49086,82439,93386 850 + 65515,88795,66470 851 + 64903,57499,26666 852 + 68286,73158,50267 853 + 26246,57150,15395 854 + 98948,59998,34092 855 + 43920,73144,2976 856 + 68935,46651,55010 857 + 75188,19536,71437 858 + 94428,34063,92570 859 + 52881,15010,53734 860 + 20995,96960,25093 861 + 39618,33148,10332 862 + 78252,35233,47084 863 + 20468,42163,5477 864 + 86128,77267,50139 865 + 75143,18182,2299 866 + 11097,63366,32588 867 + 18921,58748,60703 868 + 90414,54382,5076 869 + 23796,92996,16943 870 + 84729,17895,81177 871 + 69686,2205,76228 872 + 95769,14384,21319 873 + 252,35451,69089 874 + 23340,30613,49295 875 + 41858,45789,36354 876 + 33,28577,45663 877 + 11889,54351,68305 878 + 88873,26983,66233 879 + 86471,90079,34873 880 + 57541,20638,34455 881 + 25244,695,20334 882 + 34134,80714,25794 883 + 20569,68280,3322 884 + 8667,26273,46395 885 + 68133,17007,94043 886 + 21487,8103,64437 887 + 29560,73097,62716 888 + 32523,18955,22396 889 + 34558,99550,4781 890 + 33343,95788,63429 891 + 90191,78358,541 892 + 61035,86186,95253 893 + 70726,84551,97581 894 + 58340,89588,39079 895 + 4479,12219,19026 896 + 7531,31924,36487 897 + 95754,31075,77517 898 + 57045,87096,92359 899 + 10026,83776,89447 900 + 27272,86804,11705 901 + 92211,93388,60345 902 + 73961,87102,53998 903 + 83075,34175,34496 904 + 12549,71811,20990 905 + 7436,85903,70014 906 + 34450,70,97461 907 + 25276,8824,97522 908 + 91088,33617,74285 909 + 8693,8968,62657 910 + 11684,87690,68977 911 + 78863,53669,21973 912 + 74897,91362,54245 913 + 61668,2006,28255 914 + 43804,54180,4244 915 + 68033,63538,37548 916 + 24848,40148,99039 917 + 39485,77454,77755 918 + 12037,46195,47449 919 + 94249,38595,57871 920 + 56835,62808,15824 921 + 36748,44322,97234 922 + 74449,59448,27874 923 + 92769,5328,29031 924 + 71952,5787,60374 925 + 51500,65137,57036 926 + 75126,38563,58017 927 + 91605,83071,85330 928 + 95142,74242,61389 929 + 48538,81258,20560 930 + 42894,72720,815 931 + 35268,91261,72793 932 + 46686,55700,41021 933 + 87659,28342,53570 934 + 75844,33667,57794 935 + 96291,93113,88151 936 + 36075,79308,38704 937 + 29725,13612,82191 938 + 75856,51,95679 939 + 76888,88151,37029 940 + 86875,93273,75313 941 + 91069,8123,51210 942 + 38764,51477,57409 943 + 16757,76747,69360 944 + 67060,40243,38330 945 + 9124,19472,61055 946 + 25475,39383,80548 947 + 68662,45737,50093 948 + 10605,20544,58159 949 + 89687,31428,85417 950 + 34706,4824,26547 951 + 31692,11892,72989 952 + 35017,72971,66558 953 + 52376,36785,54438 954 + 77199,36841,78787 955 + 63226,40307,19604 956 + 27918,52813,89106 957 + 543,12459,97260 958 + 22721,92653,77226 959 + 22047,32420,77473 960 + 50107,23096,1266 961 + 89689,10137,1445 962 + 99626,5426,67539 963 + 45135,19027,72283 964 + 91663,57343,38515 965 + 16231,63012,98967 966 + 24384,74762,3138 967 + 75068,1121,32120 968 + 92923,61715,17282 969 + 31189,44207,1389 970 + 20868,89128,58615 971 + 82536,78750,7953 972 + 53165,92905,5378 973 + 6454,87128,91320 974 + 72058,92250,16673 975 + 62458,21836,79821 976 + 81067,1638,21535 977 + 56324,80191,58416 978 + 5039,17656,1501 979 + 49871,45912,84662 980 + 54569,26670,96845 981 + 57648,52234,41510 982 + 34468,46762,63901 983 + 73184,95006,98350 984 + 53794,7658,6271 985 + 21564,95139,66193 986 + 49201,55477,31114 987 + 10108,85551,31370 988 + 90862,91400,92611 989 + 5826,90177,71681 990 + 59477,22810,73219 991 + 1031,38454,13095 992 + 25784,50057,58569 993 + 40353,99246,78101 994 + 17937,14538,73868 995 + 25614,71008,36169 996 + 33379,9819,60131 997 + 5475,25938,4283 998 + 40321,63581,53244 999 + 93504,49061,94176 1000 + 36875,39683,99617
+33
src/day8.rs
··· 1 + use itertools::Itertools; 2 + 3 + use crate::spatial::Point3D; 4 + 5 + pub fn day8_part1(input: &str) -> String { 6 + let boxes = parse(input); 7 + let mut pairs = boxes 8 + .iter() 9 + .combinations(2) 10 + .map(|pair| (pair[0], pair[1])) 11 + .map(|(left, right)| (left.euclidean_distance(right), left, right)) 12 + .collect_vec(); 13 + pairs.sort_by(|(ld, _, _), (rd, _, _)| ld.partial_cmp(rd).unwrap()); 14 + pairs.truncate(1000); 15 + 16 + pairs.len().to_string() 17 + } 18 + pub fn day8_part2(input: &str) -> String { 19 + todo!() 20 + } 21 + 22 + fn parse(input: &str) -> Vec<Point3D> { 23 + input 24 + .lines() 25 + .map(|line| { 26 + line.split(',') 27 + .map(|coord| coord.parse::<usize>().unwrap()) 28 + .collect_tuple() 29 + .unwrap() 30 + }) 31 + .map(|(x, y, z)| Point3D { x, y, z }) 32 + .collect() 33 + }
+16
src/lib.rs
··· 120 120 pub mod day5; 121 121 pub mod day6; 122 122 pub mod day7; 123 + pub mod day8; 123 124 mod spatial; 124 125 125 126 #[cfg(test)] 126 127 mod tests { 127 128 use super::*; 129 + 130 + #[test] 131 + fn day8_part1_test() { 132 + // let test_result = day8::day8_part1(include_str!("../input/day8.test.txt")); 133 + // assert_eq!(test_result, "40"); 134 + let result = day8::day8_part1(include_str!("../input/day8.txt")); 135 + assert_eq!(result, "1490"); 136 + } 137 + // #[test] 138 + // fn day8_part2_test() { 139 + // let test_result = day8::day8_part2(include_str!("../input/day8.test.txt")); 140 + // assert_eq!(test_result, "40"); 141 + // // let result = day8::day8_part2(include_str!("../input/day8.txt")); 142 + // // assert_eq!(result, "3806264447357"); 143 + // } 128 144 129 145 #[test] 130 146 fn day7_part1_test() {
+22
src/spatial.rs
··· 1 + use std::collections::BTreeSet; 2 + 1 3 use itertools::Itertools; 2 4 3 5 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] 4 6 pub struct Point { 5 7 pub row: usize, 6 8 pub col: usize, 9 + } 10 + 11 + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] 12 + pub struct Point3D { 13 + pub x: usize, 14 + pub y: usize, 15 + pub z: usize, 16 + } 17 + 18 + impl Point3D { 19 + pub fn euclidean_distance(&self, other: &Self) -> f64 { 20 + (((self.x as isize - other.x as isize).abs().pow(2) 21 + + (self.y as isize - other.y as isize).abs().pow(2) 22 + + (self.z as isize - other.z as isize).abs().pow(2)) as f64) 23 + .sqrt() 24 + } 25 + } 26 + 27 + fn connected_components(pairs: &[(Point3D, Point3D)]) -> BTreeSet<BTreeSet<Point>> { 28 + todo!() 7 29 } 8 30 9 31 pub fn all_coords(width: usize, height: usize) -> impl Iterator<Item = Point> {