diff --git a/src/plasl/2025/day8/input b/src/plasl/2025/day8/input new file mode 100644 index 0000000..dfd4448 --- /dev/null +++ b/src/plasl/2025/day8/input @@ -0,0 +1,1001 @@ +67290,96641,57405 +67457,7388,52345 +40855,94248,77267 +10759,29054,92107 +84519,12395,93748 +81318,7387,82100 +83469,34441,8586 +24963,27480,82676 +79454,71624,50984 +54652,65467,45726 +1674,85185,37451 +6230,38513,59471 +99374,45307,60344 +26728,18684,62371 +97859,13386,41665 +52524,71624,40348 +10169,35346,40022 +41608,30686,51556 +53861,46615,98843 +90890,73441,19187 +45926,6655,34251 +98827,26218,69302 +9483,11922,89622 +13185,71810,70979 +797,13921,9357 +59016,49454,76968 +77759,66732,4880 +25625,43328,64844 +67064,5249,83272 +19206,56271,2879 +95214,97803,18913 +52090,37098,45967 +49992,12921,73027 +77873,88283,98603 +63666,21390,10264 +53838,80091,71364 +70303,64123,76086 +29428,28818,9555 +60008,1240,5412 +38304,17837,63842 +52030,70171,53585 +24487,80974,96068 +1948,50051,6420 +88634,96147,24200 +75584,7468,27151 +73038,19731,71368 +39644,13338,46103 +82691,76704,9121 +3109,55292,5495 +49588,73582,98851 +47546,75882,8827 +6548,61376,16314 +90962,39625,14876 +34222,67546,87305 +67957,33256,12807 +41418,10497,99192 +39289,76179,60037 +22491,75308,80473 +81941,42225,83086 +95051,10650,70063 +73421,54157,3842 +96286,61709,90532 +76399,91810,51225 +6659,33024,7701 +49922,41821,37589 +33047,61466,24417 +34427,13569,7385 +18361,27719,6140 +60731,79812,56237 +62146,10629,90510 +93465,97402,47802 +33031,99523,35000 +12457,4344,38480 +55339,84504,11443 +10156,74426,11667 +67695,82176,5934 +60693,73479,18969 +67350,71180,58806 +8138,27504,78035 +29669,69865,87806 +18443,61113,85829 +57605,30857,37380 +4982,54113,98411 +48220,24063,97484 +56535,7772,21034 +13974,26481,91566 +54920,25833,12823 +63546,71611,30985 +6370,40004,52877 +32856,14942,64337 +66473,9442,36309 +25257,65382,38158 +31415,72900,10767 +60787,25779,80153 +68398,61464,94340 +69750,34630,84724 +84614,17578,63225 +73948,27185,36494 +86781,10737,26446 +7197,99386,69687 +31127,18810,4461 +21663,49271,4370 +42443,61762,99644 +48907,26476,59940 +17366,31000,5302 +25559,50244,54227 +86160,99313,70788 +81657,26920,83013 +72093,4289,6649 +50010,31424,29946 +13274,45892,88828 +50775,22173,53775 +57788,39888,52017 +13588,26900,97308 +65977,16699,24780 +44985,74489,51544 +61572,94857,97953 +22338,69066,43682 +66553,60043,85044 +96278,93258,65430 +46012,74087,23191 +79964,4158,19256 +76934,47374,89830 +73113,884,72034 +28764,60719,68956 +78624,55084,95603 +46504,49156,56066 +77822,99140,40325 +44683,67535,71770 +37609,91115,627 +62000,67707,97242 +74064,98285,92214 +69110,69894,7909 +31202,14935,37965 +19759,93011,61301 +99714,8796,7694 +61894,26905,15203 +6556,52999,49176 +94176,53978,52822 +39051,99760,3631 +79567,49888,26394 +17242,81553,55667 +18239,86997,94281 +76874,72775,43267 +10210,16623,70536 +97739,20515,69225 +36775,72051,50943 +70168,7836,36820 +9987,3840,30192 +42678,24352,71857 +53794,59672,88649 +721,4206,64519 +71316,59156,85875 +75956,22285,91480 +8250,50234,28297 +8063,58606,14056 +74996,14071,12607 +47526,50085,85978 +62696,90444,65513 +6231,13166,51254 +78509,51102,91829 +57769,48607,57745 +34903,25252,10829 +12771,32358,92286 +61874,47304,64424 +14076,17285,59476 +258,21244,81791 +33638,71297,78912 +93764,81677,24351 +83859,27153,92542 +22937,49021,12543 +65069,15196,65759 +32895,91536,58424 +40300,51754,6636 +64954,46009,92768 +72085,62933,55993 +42570,10589,95151 +48376,35461,65696 +76335,51024,71930 +54217,6449,93970 +55495,4655,77032 +11083,18297,74696 +87366,11135,67591 +767,5279,70347 +78012,17061,7384 +70265,91178,56200 +28957,67600,60679 +865,53874,76175 +348,39355,9208 +19498,93402,8402 +72104,68700,93773 +5688,93332,71894 +75767,70965,32796 +53408,49013,68476 +47988,75351,70125 +31220,82743,8623 +26040,27782,47040 +19374,95041,89600 +30572,92384,76043 +47162,45249,51382 +13700,516,81870 +3561,93203,27200 +1557,1101,73592 +70203,65842,34995 +19541,62496,63835 +28755,59020,22232 +89015,93399,75946 +84491,90753,16369 +63715,38914,10662 +50657,46067,86339 +65809,25475,77316 +57344,59269,34230 +84010,98023,53589 +51633,6510,97257 +99770,60608,51642 +30006,58958,16460 +19282,24623,17143 +65003,16787,31920 +76170,51203,9060 +9621,3617,82965 +59734,19166,56760 +42440,24444,20591 +23922,95150,42176 +4740,82614,30074 +99758,6570,85826 +55177,90093,36231 +3762,70576,51852 +60190,61691,82285 +30087,78637,89178 +4300,79375,19999 +90837,15519,97237 +2494,43322,94678 +12162,66675,42244 +94144,1874,33797 +61102,39285,10436 +91141,32394,50270 +2421,97284,29667 +87927,6198,64245 +74087,73910,82050 +37879,36621,41402 +12482,17453,78595 +38204,67930,36412 +11224,45974,69 +51930,45723,53037 +63618,45269,7602 +43306,55812,29384 +54227,49045,87520 +57149,37175,83325 +91914,62254,8437 +80744,23310,85875 +71256,58355,71259 +13058,6052,77530 +91811,82043,64187 +70895,50369,33181 +66773,64302,48113 +28255,92376,4515 +18594,19866,1769 +19705,92505,58795 +65274,27611,29798 +46867,9916,39255 +59370,26822,40560 +23144,81135,29001 +58365,23106,14212 +98490,67741,3975 +92419,13727,42168 +13723,45801,87914 +91862,43051,79138 +53944,20531,67473 +87742,59443,72166 +20460,92357,5339 +95741,55926,41769 +14483,9344,65208 +19537,8912,34867 +57615,3686,48913 +29367,48644,1722 +64700,34053,19064 +12120,14152,41952 +68516,24629,76292 +90572,35089,50093 +39969,77319,47955 +83790,47340,78729 +22696,29927,80447 +6205,62014,7276 +41081,22322,40321 +83106,25756,64961 +95938,43369,71825 +18536,34765,58457 +81932,40112,33922 +85192,83319,96037 +81812,4359,58444 +14856,74920,9406 +83154,83414,23400 +73708,19021,43808 +72899,51910,44577 +23257,94078,43963 +45108,1645,2968 +29947,57565,91851 +72643,88815,33248 +46327,61923,46984 +9471,74789,90945 +72934,97819,48265 +22028,84499,2276 +4762,81239,66686 +78749,62993,70173 +93039,68243,89384 +45865,93860,60207 +66877,81149,43890 +28659,44109,88621 +32171,90715,32867 +93301,92209,51426 +98102,55871,83656 +57752,96442,77662 +32689,2389,59449 +97256,20104,10599 +50705,17497,99567 +52589,10087,70828 +87224,44088,13924 +44214,74287,99048 +50616,85457,20546 +52820,32888,7722 +16113,80194,30453 +94608,85859,40567 +21057,94556,23695 +18741,79734,29835 +7548,22764,81763 +45514,68905,4582 +5989,89843,89208 +91363,33630,65967 +18145,38196,30781 +37864,66751,70910 +91084,19371,42881 +24636,81367,25252 +21193,578,3908 +99888,65204,30313 +92121,34450,74758 +78141,35310,77605 +70596,22802,89152 +2535,97823,96093 +94797,24592,95470 +63979,7161,93833 +29152,86680,41578 +65382,75700,23295 +72273,13667,17963 +46428,7946,85224 +28974,53484,82326 +29929,35822,37149 +10557,59068,82172 +49144,7148,17311 +96106,32562,45877 +36674,97215,40746 +75857,46492,88424 +19208,27090,22020 +7473,24030,30816 +63792,8106,40511 +8940,53685,88668 +62712,18544,45496 +36790,93664,64249 +26931,53166,31041 +56817,65528,9112 +50396,21281,97929 +74542,82000,64082 +85099,82629,74775 +44616,75920,20606 +36784,62461,58648 +13397,53861,43937 +40028,97289,91690 +68826,51653,27939 +40301,24809,14050 +83304,29686,69760 +82756,73931,29925 +53557,94748,66011 +5598,35717,35217 +26472,61916,94278 +56993,72649,46321 +67280,30800,24616 +34332,90272,52569 +27886,70347,82128 +23012,13706,73529 +4383,78544,58588 +84577,45190,45981 +73055,82495,3227 +15805,9777,60601 +16422,50284,15648 +20114,68753,28673 +31938,27503,40755 +67686,56771,31099 +47288,72521,49147 +43726,32961,73026 +61917,54604,976 +77837,19947,26651 +16563,53358,730 +88445,9449,66421 +58433,25276,60355 +52004,53457,75457 +80594,8244,91756 +18763,18729,28294 +39095,8617,68439 +45904,92004,11579 +22694,62552,60289 +22443,63463,97769 +35408,74602,87353 +40295,89080,49540 +16068,526,9872 +50779,98547,69577 +49689,73248,77448 +67246,13019,3787 +16499,21145,89800 +24,93793,18028 +57252,38658,87487 +32239,70186,8467 +69506,86800,25788 +64422,85955,81854 +44008,5853,23063 +20173,4167,554 +18904,27747,41762 +37565,95153,61966 +45459,51397,12044 +93624,25608,50009 +32916,60560,14183 +85717,62874,8740 +27654,3384,66341 +45271,93888,62132 +89742,31496,40842 +67108,13378,92650 +36462,35431,27858 +33684,88138,7774 +98741,43987,77347 +63642,23394,82624 +56032,97123,48155 +41175,40239,11209 +54977,34762,41708 +25928,24480,19765 +7219,9720,68252 +46136,29769,8473 +94425,43655,12692 +84000,1997,61314 +841,63709,82079 +30148,76525,12444 +45551,88306,85769 +51682,93681,68369 +72935,39901,43559 +54280,52532,84228 +54281,95523,47540 +1015,80794,79317 +17099,60468,21246 +71288,42748,49191 +57534,30823,76717 +83072,2273,89120 +38505,61884,76327 +22678,83265,75272 +24897,40571,33518 +11140,95105,35423 +35999,34055,10367 +81565,70046,59802 +85308,32638,29853 +58095,86499,9065 +37864,38425,98236 +46489,94138,41165 +55657,48016,25539 +82991,10970,23631 +33198,75919,95782 +65364,9271,22353 +99789,5527,72974 +44609,61072,62783 +6073,74263,43449 +55602,36817,30282 +23761,78832,72595 +30476,92467,44595 +29973,62502,62679 +36835,60961,34634 +35647,20188,29733 +34062,72992,61658 +84122,38204,55259 +59063,72682,69181 +53967,47126,38582 +15599,40991,52396 +35755,1494,99341 +56205,46459,87609 +66943,73158,70413 +93194,37599,66239 +18055,20777,97815 +61616,89956,15563 +95359,42337,3353 +54332,5319,43982 +28859,15414,86080 +33440,96298,56128 +43942,68460,89961 +12091,58396,37632 +79244,24256,56400 +2758,70483,5219 +73679,75951,46587 +32012,53379,87629 +11003,24750,20791 +47242,26446,60500 +39666,82152,42941 +21692,17477,10534 +27099,75283,39293 +68138,19521,80441 +92514,55964,70954 +81424,6033,3486 +2798,31800,90450 +80450,43000,34632 +92386,27224,45068 +59503,91661,80114 +72923,95356,90167 +22664,46812,22494 +94472,7887,90558 +87376,48817,39257 +95292,60196,63182 +21770,42800,62741 +23809,58663,88054 +8688,6122,66914 +36813,80896,6812 +66005,23751,31922 +11237,92965,79154 +81413,41702,53392 +99114,64081,33185 +7065,13309,66921 +36105,39552,85330 +66623,95580,2425 +19205,15708,36826 +36756,69676,26756 +44763,82607,27419 +11881,49347,34218 +39039,62825,67351 +22393,18063,15093 +46519,95763,50714 +56518,62844,67589 +19768,91507,29620 +88801,82930,1767 +44658,78159,97708 +93047,76172,71487 +82586,45934,28254 +61732,21267,2904 +33207,65473,30932 +76,53366,27851 +31721,61869,92110 +32724,29288,12011 +78872,17260,88279 +52274,11755,56653 +66333,28439,83459 +25056,56761,44128 +40312,165,66123 +20471,2992,41725 +19442,1527,22956 +36379,81880,26842 +6471,72605,19915 +93071,19588,55730 +56932,82632,81947 +23921,96167,40053 +43039,63724,74999 +51396,86459,86981 +10197,71105,85516 +51370,19012,5631 +8141,66345,15714 +16840,97037,22709 +62284,83148,8176 +13671,30043,3734 +6096,69526,29747 +8969,50462,37642 +73048,7860,97194 +98757,2587,46814 +7271,3605,43830 +11027,55043,38026 +94211,84480,49119 +17166,37189,12517 +86221,70644,96259 +24646,11174,936 +80465,68396,33534 +80395,4810,48092 +78163,41666,40591 +27395,18244,18552 +88980,39834,45167 +6218,11070,7396 +81083,40844,56793 +20342,92564,99121 +39071,9859,44145 +452,6480,3781 +60015,61925,93965 +797,82708,24635 +25328,13159,16580 +95091,10326,96429 +78530,47188,12721 +18259,1868,16917 +60819,79220,24308 +16732,59194,26415 +56614,60716,27392 +35732,62763,51659 +9138,48486,70129 +51515,42744,51584 +73221,66617,71200 +82762,46779,96518 +68363,20759,63537 +52494,17492,8108 +34009,69818,60214 +26624,85920,52163 +30379,54274,60345 +71148,48700,30220 +71421,37597,13933 +22125,3431,90899 +25601,57766,69781 +60461,86056,59407 +45306,19197,87451 +13750,88845,17973 +6837,58762,75042 +95531,32165,58612 +50890,48482,78859 +33791,67239,7236 +43722,80733,21975 +47206,76012,46317 +98993,10071,28333 +61291,24847,71471 +18752,3375,67685 +62212,84723,77513 +15920,86994,15830 +15982,37202,34153 +1093,14971,92504 +91970,35167,13439 +71233,81345,71711 +62756,97745,44120 +49876,36664,8814 +43825,17321,46763 +7602,7340,29320 +91980,99520,67667 +75162,15727,16725 +29256,9698,32828 +43548,26773,96883 +32313,88254,58692 +83777,51004,75354 +60339,55510,37245 +96294,12997,95218 +1356,88641,31271 +16334,48317,69243 +9119,9366,54219 +25154,53895,70757 +28098,37166,79501 +59401,68465,40091 +35497,67032,4260 +97050,4092,34485 +4669,12918,25543 +97312,54652,36035 +3135,84740,52676 +93895,68863,16526 +75611,94618,51953 +66925,30801,63916 +14677,75365,36462 +9363,98514,44159 +24864,38000,41985 +46998,85766,47757 +87359,83238,74498 +61318,23722,15129 +15602,36662,19336 +63895,81394,30655 +66948,69641,8982 +90174,5586,25772 +9583,23950,34479 +25286,92527,62748 +6373,30936,71381 +35878,74503,38755 +91585,89066,80573 +12420,44313,98390 +59079,49956,38201 +23419,10050,12608 +44049,11731,59826 +14420,13720,58240 +4620,89177,86383 +23611,69711,25524 +17260,83993,37967 +80874,7248,72121 +13497,47556,38876 +50694,12591,80584 +73951,51351,76261 +93645,81994,5189 +2776,58934,13120 +67811,19326,86209 +23504,7642,78554 +18121,1196,30448 +45988,31767,21899 +11931,57361,25673 +26889,83944,65903 +97719,51649,91927 +88314,84393,87482 +78556,76412,36730 +94672,40095,63691 +21901,59776,42961 +50637,91580,73962 +99780,67763,21419 +28060,60631,64310 +74984,13003,33396 +36975,76600,81646 +3136,5356,99145 +13539,38472,2396 +72112,41461,18729 +92837,42783,42942 +81425,69571,19235 +75322,19380,36184 +42147,75557,70667 +38744,65904,50185 +64890,5865,35666 +23650,64258,33681 +71830,79490,67859 +72300,77127,36277 +8969,38380,63630 +24265,46490,71093 +20657,27695,37371 +37448,62370,97706 +33553,69538,72284 +20831,7523,18183 +6454,4744,9300 +41896,97501,55916 +55825,20208,76521 +20424,63757,9074 +71964,19541,47784 +11982,65806,73955 +9479,62097,63394 +29342,58864,59765 +68174,36707,22806 +46933,61765,88514 +33945,59267,53170 +81558,81748,20023 +72047,63595,14566 +4013,64944,71718 +79661,42481,71671 +56232,79353,16142 +48281,79087,37458 +36492,69966,6338 +33434,44930,4038 +81668,10078,31559 +82945,3324,76091 +71905,69223,50282 +40392,18126,86800 +75274,14710,26078 +68426,53090,62345 +82135,49539,14659 +59877,67606,29310 +6091,72367,97587 +56850,82125,83589 +41751,48692,47391 +31263,71771,48386 +37209,89575,91065 +43957,64487,3855 +76775,77248,33790 +76032,81539,49620 +87774,43707,48216 +97228,3951,35488 +37449,21060,51632 +5392,97449,86824 +94197,35009,51242 +65757,43488,38203 +1039,19890,78514 +65720,74222,32091 +51301,85527,93295 +66013,74935,34017 +92306,68274,81079 +84089,50393,65656 +13575,42583,84311 +42384,10239,75987 +64944,18024,11850 +19557,66092,54599 +22701,70833,49289 +54034,54442,19579 +57238,24018,89329 +57736,65981,84407 +52196,26426,6386 +7904,35529,43194 +47333,71208,58929 +58524,63614,77332 +94176,82821,32406 +70102,58051,15820 +93971,29930,76538 +82363,19432,30119 +91925,9341,84876 +67781,6403,66600 +4429,17927,96046 +83232,11932,6562 +53400,53510,52652 +54381,17428,73120 +92676,10554,70330 +25452,28498,12579 +41958,44375,75796 +67468,86261,59152 +91643,28650,29066 +32309,61928,52447 +19255,53663,32298 +57699,26153,80176 +62830,67986,82998 +85120,51841,7732 +20421,54937,24311 +51662,86936,90974 +63932,48674,11726 +42953,72523,63885 +3888,39049,47494 +27041,48800,53478 +92505,49139,71435 +85875,59250,28234 +28743,8185,98272 +85579,89310,81557 +7906,19687,87074 +26698,67247,17345 +58277,91659,21247 +35366,6420,48223 +23452,46868,90679 +35197,210,2423 +8996,79415,64559 +74755,90496,64508 +9942,60096,23571 +86875,54147,88141 +9049,67539,79447 +42410,14976,31422 +56006,68619,99755 +20585,46565,36093 +81299,38235,13918 +14305,75200,11911 +53269,11551,31316 +17535,20115,85484 +49085,34766,89750 +53631,95969,72429 +25762,61753,10515 +50870,21463,7447 +24727,81470,63126 +98969,18337,20390 +39346,50124,27384 +20864,85544,61306 +67437,1077,56555 +25292,7989,50250 +90099,79862,98484 +39764,87921,34293 +11338,97118,54345 +44586,35688,54418 +179,45038,44022 +48811,26312,48486 +17717,36662,30440 +61927,76596,75656 +43061,80906,20610 +81243,63928,17229 +10120,58322,28429 +80311,7422,10150 +33138,23263,4580 +86501,26082,87679 +54761,73823,48583 +35502,16859,28135 +78104,53502,64591 +35716,17128,18728 +94645,85943,23671 +71884,48540,89135 +5653,32880,30503 +41209,30857,9737 +43653,2720,6764 +87677,91610,31276 +55084,2999,40226 +30882,36748,33130 +78808,78580,49682 +93265,42389,68540 +31091,4138,75355 +84634,90967,15841 +78017,60220,17737 +10642,34205,25 +36892,23379,58338 +12713,78846,22533 +37691,17345,70855 +54429,59972,14178 +30232,97402,31788 +4843,42635,48364 +94968,8851,20514 +31282,52847,29364 +58776,74876,2756 +49456,13809,18874 +92651,95352,99519 +26713,44991,41924 +12178,74310,18580 +90688,1524,54832 +66052,56435,6572 +58102,30216,16209 +73503,8880,54265 +16474,93145,53678 +82692,1955,93234 +55601,37818,2726 +59066,90272,54494 +93257,35105,24067 +4642,54475,74981 +65978,72308,18906 +33755,76029,79666 +88694,63262,73991 +78774,3338,42499 +77228,56100,97509 +39062,65018,97147 +40623,68294,67923 +33855,29210,8159 +55967,56563,84055 +23978,66192,16086 +65085,82815,91890 +38382,99964,40851 +2293,71288,563 +30547,54469,56954 +84883,71185,79447 +36759,72646,16564 +86078,29782,52873 +99032,16543,15501 +65467,27694,56956 +80375,25753,59462 +2595,91129,26890 +70524,95748,82034 +18851,68980,64471 +63396,96784,47377 +94944,601,92082 +25586,94449,5581 +72601,93556,54233 +18016,60724,61822 +86111,51483,14722 +20839,37107,97486 +27288,55327,8834 +80491,82301,40626 +17242,89332,72471 +53899,5960,49823 +87225,75498,19977 +86123,77109,93788 +7938,32886,42255 +19897,15239,77603 +59940,46733,66610 +95773,47716,46691 +5865,59639,50987 +14780,94296,6496 +70782,43755,88788 +4658,83918,955 +61523,46864,5453 +43730,59416,82688 +55443,13047,71504 +6630,98450,29521 +3892,88202,56187 +49714,96018,38356 +84726,11922,25598 +26903,91116,33002 +65249,42743,26526 +86648,15312,70203 +21210,5892,22146 +94177,54682,89759 +34905,85830,98964 +93473,98321,33830 +54637,92068,76713 +51041,91786,92206 +52534,40443,36919 +7944,93935,65143 +19683,67546,7487 +89701,71611,20349 +53951,1436,60181 +1818,27568,63029 +53835,88696,47668 +71468,52935,43932 +91238,87169,19943 +2505,47302,4793 +25372,41279,33341 +71401,63848,47930 +41422,21036,45654 +3312,89710,10610 +6173,98548,33040 +78738,10444,60538 +24598,45505,38628 +78288,37162,61240 +50639,70053,30915 +92544,39889,15927 +7651,57466,37470 +2716,64691,47043 +65736,97990,17227 +87537,82286,61333 +43942,19614,64158 +48909,13162,44690 +85762,64530,32093 +96967,1565,41451 +54577,25367,65370 +21359,31614,2239 +3409,67461,76866 +49853,82445,73942 +56307,87900,35789 +79863,42999,87077 +32464,16183,76411 +95867,58942,2061 +65635,79878,82148 +54871,56786,79565 +63533,57716,71388 +95843,40953,10808 +9793,61226,15066 +77232,91842,42782 +4759,69634,86895 +62737,39403,38689 +22731,62209,60103 +45290,84206,86766 +15701,80853,39281 +41677,78364,50359 +4158,66373,16985 +33708,67942,67330 +61095,77051,97961 +45951,53136,48056 +92536,71767,20021 +80152,11670,4099 +26244,69858,16325 +19125,88235,18993 +72434,79900,4082 +97282,10585,9187 +62739,59355,80944 +18099,53872,78838 + diff --git a/src/plasl/2025/day8/input.s b/src/plasl/2025/day8/input.s new file mode 100644 index 0000000..eea942b --- /dev/null +++ b/src/plasl/2025/day8/input.s @@ -0,0 +1,1001 @@ +57252,38658,87487 +32916,60560,14183 +49714,96018,38356 +71148,48700,30220 +28764,60719,68956 +27886,70347,82128 +91925,9341,84876 +99374,45307,60344 +12162,66675,42244 +31721,61869,92110 +52534,40443,36919 +7602,7340,29320 +91585,89066,80573 +49992,12921,73027 +58277,91659,21247 +50870,21463,7447 +56932,82632,81947 +23257,94078,43963 +79863,42999,87077 +17260,83993,37967 +90572,35089,50093 +44214,74287,99048 +88694,63262,73991 +19705,92505,58795 +50775,22173,53775 +6556,52999,49176 +50694,12591,80584 +75584,7468,27151 +68138,19521,80441 +19557,66092,54599 +43942,68460,89961 +26889,83944,65903 +50705,17497,99567 +54217,6449,93970 +20421,54937,24311 +84519,12395,93748 +20864,85544,61306 +348,39355,9208 +67290,96641,57405 +55967,56563,84055 +40855,94248,77267 +94176,53978,52822 +62756,97745,44120 +19541,62496,63835 +94176,82821,32406 +73951,51351,76261 +53269,11551,31316 +37448,62370,97706 +18741,79734,29835 +60731,79812,56237 +56518,62844,67589 +35878,74503,38755 +95938,43369,71825 +35647,20188,29733 +60339,55510,37245 +82991,10970,23631 +78624,55084,95603 +28755,59020,22232 +87537,82286,61333 +34009,69818,60214 +97859,13386,41665 +16563,53358,730 +78163,41666,40591 +49456,13809,18874 +25328,13159,16580 +53400,53510,52652 +19255,53663,32298 +32309,61928,52447 +69506,86800,25788 +82586,45934,28254 +49588,73582,98851 +92514,55964,70954 +99758,6570,85826 +66925,30801,63916 +59016,49454,76968 +97050,4092,34485 +81318,7387,82100 +96286,61709,90532 +6218,11070,7396 +32724,29288,12011 +92536,71767,20021 +15920,86994,15830 +59079,49956,38201 +18055,20777,97815 +48376,35461,65696 +12482,17453,78595 +52589,10087,70828 +87927,6198,64245 +7219,9720,68252 +7197,99386,69687 +68426,53090,62345 +31127,18810,4461 +72273,13667,17963 +25286,92527,62748 +62696,90444,65513 +86078,29782,52873 +78738,10444,60538 +35497,67032,4260 +13723,45801,87914 +84010,98023,53589 +81932,40112,33922 +73221,66617,71200 +41958,44375,75796 +81424,6033,3486 +61318,23722,15129 +94672,40095,63691 +8141,66345,15714 +9942,60096,23571 +53899,5960,49823 +72934,97819,48265 +70102,58051,15820 +61102,39285,10436 +14483,9344,65208 +23504,7642,78554 +19768,91507,29620 +36674,97215,40746 +73055,82495,3227 +5688,93332,71894 +78288,37162,61240 +4740,82614,30074 +22731,62209,60103 +3409,67461,76866 +75322,19380,36184 +6205,62014,7276 +43942,19614,64158 +37879,36621,41402 +71884,48540,89135 +37565,95153,61966 +65467,27694,56956 +48811,26312,48486 +58095,86499,9065 +29256,9698,32828 +12091,58396,37632 +78012,17061,7384 +44616,75920,20606 +22491,75308,80473 +25586,94449,5581 +73421,54157,3842 +19206,56271,2879 +84000,1997,61314 +27041,48800,53478 +47546,75882,8827 +4620,89177,86383 +15805,9777,60601 +74064,98285,92214 +52196,26426,6386 +92544,39889,15927 +44008,5853,23063 +85717,62874,8740 +12420,44313,98390 +9049,67539,79447 +15602,36662,19336 +25372,41279,33341 +21901,59776,42961 +49876,36664,8814 +11027,55043,38026 +24636,81367,25252 +13497,47556,38876 +93624,25608,50009 +85120,51841,7732 +60819,79220,24308 +70265,91178,56200 +67686,56771,31099 +767,5279,70347 +20342,92564,99121 +9621,3617,82965 +15701,80853,39281 +95741,55926,41769 +83790,47340,78729 +31282,52847,29364 +57788,39888,52017 +67957,33256,12807 +77232,91842,42782 +49085,34766,89750 +39666,82152,42941 +48907,26476,59940 +89701,71611,20349 +91084,19371,42881 +36892,23379,58338 +17717,36662,30440 +3109,55292,5495 +3892,88202,56187 +64422,85955,81854 +65382,75700,23295 +29947,57565,91851 +92676,10554,70330 +84726,11922,25598 +27099,75283,39293 +56205,46459,87609 +35999,34055,10367 +66773,64302,48113 +82756,73931,29925 +16068,526,9872 +28659,44109,88621 +64700,34053,19064 +20585,46565,36093 +65977,16699,24780 +54977,34762,41708 +10156,74426,11667 +62284,83148,8176 +47242,26446,60500 +26698,67247,17345 +38744,65904,50185 +66877,81149,43890 +79244,24256,56400 +37864,38425,98236 +51396,86459,86981 +39764,87921,34293 +33638,71297,78912 +16422,50284,15648 +50657,46067,86339 +68363,20759,63537 +61732,21267,2904 +26931,53166,31041 +35755,1494,99341 +18443,61113,85829 +10197,71105,85516 +9119,9366,54219 +12457,4344,38480 +78774,3338,42499 +29367,48644,1722 +92386,27224,45068 +46327,61923,46984 +58776,74876,2756 +76032,81539,49620 +10759,29054,92107 +45514,68905,4582 +90962,39625,14876 +8250,50234,28297 +96106,32562,45877 +58102,30216,16209 +54871,56786,79565 +11338,97118,54345 +28098,37166,79501 +78141,35310,77605 +13700,516,81870 +41418,10497,99192 +70303,64123,76086 +65003,16787,31920 +7944,93935,65143 +80744,23310,85875 +86160,99313,70788 +87359,83238,74498 +18121,1196,30448 +59877,67606,29310 +91141,32394,50270 +6454,4744,9300 +62212,84723,77513 +76934,47374,89830 +13274,45892,88828 +87376,48817,39257 +10642,34205,25 +38304,17837,63842 +61874,47304,64424 +33434,44930,4038 +99114,64081,33185 +19374,95041,89600 +52274,11755,56653 +70203,65842,34995 +22701,70833,49289 +83304,29686,69760 +53835,88696,47668 +54637,92068,76713 +67437,1077,56555 +86781,10737,26446 +43730,59416,82688 +21359,31614,2239 +45271,93888,62132 +22393,18063,15093 +67781,6403,66600 +38382,99964,40851 +34062,72992,61658 +73048,7860,97194 +76,53366,27851 +63715,38914,10662 +2595,91129,26890 +58433,25276,60355 +24265,46490,71093 +6548,61376,16314 +22694,62552,60289 +9471,74789,90945 +57534,30823,76717 +43726,32961,73026 +45306,19197,87451 +22696,29927,80447 +83072,2273,89120 +7906,19687,87074 +55602,36817,30282 +60787,25779,80153 +93895,68863,16526 +64890,5865,35666 +63396,96784,47377 +66013,74935,34017 +8063,58606,14056 +84577,45190,45981 +20424,63757,9074 +22937,49021,12543 +88314,84393,87482 +72434,79900,4082 +65720,74222,32091 +81941,42225,83086 +72899,51910,44577 +3136,5356,99145 +96278,93258,65430 +40028,97289,91690 +32171,90715,32867 +30087,78637,89178 +92505,49139,71435 +82692,1955,93234 +55339,84504,11443 +45865,93860,60207 +85875,59250,28234 +44586,35688,54418 +1674,85185,37451 +35366,6420,48223 +44763,82607,27419 +10210,16623,70536 +79661,42481,71671 +18259,1868,16917 +82135,49539,14659 +59503,91661,80114 +36759,72646,16564 +33138,23263,4580 +28255,92376,4515 +20460,92357,5339 +25154,53895,70757 +49853,82445,73942 +46504,49156,56066 +54280,52532,84228 +97256,20104,10599 +1948,50051,6420 +35197,210,2423 +1093,14971,92504 +55601,37818,2726 +80375,25753,59462 +17366,31000,5302 +95091,10326,96429 +13397,53861,43937 +91914,62254,8437 +77759,66732,4880 +92306,68274,81079 +15982,37202,34153 +50616,85457,20546 +797,13921,9357 +62739,59355,80944 +30006,58958,16460 +73948,27185,36494 +81812,4359,58444 +24487,80974,96068 +16840,97037,22709 + +66623,95580,2425 +35716,17128,18728 +45926,6655,34251 +33945,59267,53170 +25056,56761,44128 +46867,9916,39255 +50637,91580,73962 +23012,13706,73529 +41677,78364,50359 +46998,85766,47757 +90837,15519,97237 +85579,89310,81557 +32313,88254,58692 +71964,19541,47784 +13185,71810,70979 +36784,62461,58648 +33791,67239,7236 +72112,41461,18729 +42147,75557,70667 +86123,77109,93788 +2535,97823,96093 +56032,97123,48155 +46428,7946,85224 +54429,59972,14178 +16113,80194,30453 +67064,5249,83272 +67246,13019,3787 +98490,67741,3975 +9363,98514,44159 +86221,70644,96259 +99714,8796,7694 +35502,16859,28135 +21057,94556,23695 +34903,25252,10829 +89742,31496,40842 +2798,31800,90450 +76399,91810,51225 +51515,42744,51584 +21193,578,3908 +10169,35346,40022 +74996,14071,12607 +99780,67763,21419 +98102,55871,83656 +93645,81994,5189 +26472,61916,94278 +92419,13727,42168 +30882,36748,33130 +57736,65981,84407 +47333,71208,58929 +43548,26773,96883 +26903,91116,33002 +6096,69526,29747 +6370,40004,52877 +9483,11922,89622 +71401,63848,47930 +7548,22764,81763 +74542,82000,64082 +42953,72523,63885 +35408,74602,87353 +31263,71771,48386 +54281,95523,47540 +45951,53136,48056 +1015,80794,79317 +85192,83319,96037 +42384,10239,75987 +50779,98547,69577 +62146,10629,90510 +18904,27747,41762 +11237,92965,79154 +60015,61925,93965 +77822,99140,40325 +53794,59672,88649 +85762,64530,32093 +18594,19866,1769 +52494,17492,8108 +36756,69676,26756 +41751,48692,47391 +66052,56435,6572 +11003,24750,20791 +48281,79087,37458 +74087,73910,82050 +14780,94296,6496 +65274,27611,29798 +95292,60196,63182 +5653,32880,30503 +45290,84206,86766 +32239,70186,8467 +40295,89080,49540 +34332,90272,52569 +18752,3375,67685 +57238,24018,89329 +99888,65204,30313 +98993,10071,28333 +56232,79353,16142 +87742,59443,72166 +39039,62825,67351 +19498,93402,8402 +30148,76525,12444 +57344,59269,34230 +55177,90093,36231 +13588,26900,97308 +841,63709,82079 +36379,81880,26842 +34427,13569,7385 +7065,13309,66921 +42443,61762,99644 +71830,79490,67859 +83777,51004,75354 +58365,23106,14212 +6630,98450,29521 +8969,38380,63630 +3888,39049,47494 +97228,3951,35488 +93764,81677,24351 +39095,8617,68439 +55495,4655,77032 +59940,46733,66610 +23650,64258,33681 +80874,7248,72121 +28060,60631,64310 +41081,22322,40321 +87366,11135,67591 +94968,8851,20514 +98827,26218,69302 +35732,62763,51659 +56307,87900,35789 +24897,40571,33518 +81083,40844,56793 +42678,24352,71857 +81558,81748,20023 +797,82708,24635 +73679,75951,46587 +97282,10585,9187 +69750,34630,84724 +4982,54113,98411 +63979,7161,93833 +84089,50393,65656 +33553,69538,72284 +91238,87169,19943 +452,6480,3781 +78872,17260,88279 +2716,64691,47043 +54652,65467,45726 +43957,64487,3855 +84122,38204,55259 +94645,85943,23671 +44658,78159,97708 +91643,28650,29066 +82945,3324,76091 +5989,89843,89208 +20657,27695,37371 +4300,79375,19999 +19442,1527,22956 +71468,52935,43932 +30572,92384,76043 +71256,58355,71259 +24963,27480,82676 +8688,6122,66914 +8138,27504,78035 +27395,18244,18552 +2293,71288,563 +33440,96298,56128 +92651,95352,99519 +40623,68294,67923 +37691,17345,70855 +95867,58942,2061 +72300,77127,36277 +23452,46868,90679 +5392,97449,86824 +95531,32165,58612 +70895,50369,33181 +61927,76596,75656 +45108,1645,2968 +84491,90753,16369 +33708,67942,67330 +1356,88641,31271 +51930,45723,53037 +18361,27719,6140 +75956,22285,91480 +91970,35167,13439 +97312,54652,36035 +60693,73479,18969 +28957,67600,60679 +80311,7422,10150 +5598,35717,35217 +65635,79878,82148 +84634,90967,15841 +70524,95748,82034 +37864,66751,70910 +88634,96147,24200 +46489,94138,41165 +12771,32358,92286 +33031,99523,35000 +13750,88845,17973 +4843,42635,48364 +65978,72308,18906 +56535,7772,21034 +25257,65382,38158 +72643,88815,33248 +7651,57466,37470 +13575,42583,84311 +43039,63724,74999 +86648,15312,70203 +82762,46779,96518 +32689,2389,59449 +83859,27153,92542 +67108,13378,92650 +63533,57716,71388 +28974,53484,82326 +22443,63463,97769 +53861,46615,98843 +12178,74310,18580 +76335,51024,71930 +1039,19890,78514 +23144,81135,29001 +19537,8912,34867 +80465,68396,33534 +67695,82176,5934 +92121,34450,74758 +65249,42743,26526 +62712,18544,45496 +9138,48486,70129 +51633,6510,97257 +25292,7989,50250 +37209,89575,91065 +40301,24809,14050 +63642,23394,82624 +93465,97402,47802 +26728,18684,62371 +90890,73441,19187 +18851,68980,64471 +3312,89710,10610 +4658,83918,955 +41608,30686,51556 +78530,47188,12721 +53557,94748,66011 +4013,64944,71718 +93265,42389,68540 +45988,31767,21899 +46012,74087,23191 +179,45038,44022 +30379,54274,60345 +64944,18024,11850 +54381,17428,73120 +49144,7148,17311 +59066,90272,54494 +81299,38235,13918 +31202,14935,37965 +76170,51203,9060 +57752,96442,77662 +81243,63928,17229 +63895,81394,30655 +69110,69894,7909 +75857,46492,88424 +66948,69641,8982 +18145,38196,30781 +80491,82301,40626 +14420,13720,58240 +73708,19021,43808 +77228,56100,97509 +24727,81470,63126 +90688,1524,54832 +44049,11731,59826 +67457,7388,52345 +94944,601,92082 +34222,67546,87305 +56850,82125,83589 +43653,2720,6764 +93971,29930,76538 +17242,81553,55667 +80395,4810,48092 +95214,97803,18913 +2776,58934,13120 +34905,85830,98964 +38505,61884,76327 +47288,72521,49147 +43722,80733,21975 +85099,82629,74775 +45551,88306,85769 +75611,94618,51953 +23611,69711,25524 +51370,19012,5631 +47206,76012,46317 +97739,20515,69225 +61523,46864,5453 +80450,43000,34632 +55825,20208,76521 +6373,30936,71381 +6173,98548,33040 +68516,24629,76292 +70782,43755,88788 +41896,97501,55916 +57149,37175,83325 +865,53874,76175 +72085,62933,55993 +50639,70053,30915 +65364,9271,22353 +39644,13338,46103 +93301,92209,51426 +40300,51754,6636 +81413,41702,53392 +73038,19731,71368 +23761,78832,72595 +59734,19166,56760 +56006,68619,99755 +91980,99520,67667 +86501,26082,87679 +28859,15414,86080 +72601,93556,54233 +93257,35105,24067 +93047,76172,71487 +75274,14710,26078 +25601,57766,69781 +2758,70483,5219 +77837,19947,26651 +98969,18337,20390 +52524,71624,40348 +61616,89956,15563 +33207,65473,30932 +25452,28498,12579 +24598,45505,38628 +41209,30857,9737 +39969,77319,47955 +46933,61765,88514 +29428,28818,9555 +29929,35822,37149 +65736,97990,17227 +37449,21060,51632 +75162,15727,16725 +61095,77051,97961 +21210,5892,22146 +47526,50085,85978 +48220,24063,97484 +55657,48016,25539 +99770,60608,51642 +36790,93664,64249 +23809,58663,88054 +17166,37189,12517 +56614,60716,27392 +36813,80896,6812 +61291,24847,71471 +52820,32888,7722 +90099,79862,98484 +1557,1101,73592 +27654,3384,66341 +51301,85527,93295 +36492,69966,6338 +20471,2992,41725 +18536,34765,58457 +71233,81345,71711 +96967,1565,41451 +66943,73158,70413 +71288,42748,49191 +5865,59639,50987 +17535,20115,85484 +18099,53872,78838 +11140,95105,35423 +2421,97284,29667 +42570,10589,95151 +63932,48674,11726 +76874,72775,43267 +23921,96167,40053 +20173,4167,554 +26713,44991,41924 +22028,84499,2276 +33047,61466,24417 +38204,67930,36412 +18763,18729,28294 +26624,85920,52163 +55443,13047,71504 +83469,34441,8586 +81657,26920,83013 +78556,76412,36730 +11083,18297,74696 +88801,82930,1767 +19897,15239,77603 +54034,54442,19579 +3762,70576,51852 +9583,23950,34479 +73503,8880,54265 +94797,24592,95470 +13974,26481,91566 +87225,75498,19977 +22678,83265,75272 +54332,5319,43982 +10120,58322,28429 +24646,11174,936 +4642,54475,74981 +62830,67986,82998 +43061,80906,20610 +39346,50124,27384 +64954,46009,92768 +29152,86680,41578 +29669,69865,87806 +96294,12997,95218 +41422,21036,45654 +33684,88138,7774 +36462,35431,27858 +6073,74263,43449 +10557,59068,82172 +6231,13166,51254 +87677,91610,31276 +33755,76029,79666 +50010,31424,29946 +3561,93203,27200 +70596,22802,89152 +9987,3840,30192 +56993,72649,46321 +72923,95356,90167 +30232,97402,31788 +22125,3431,90899 +66333,28439,83459 +97719,51649,91927 +13671,30043,3734 +68174,36707,22806 +58524,63614,77332 +73113,884,72034 +81425,69571,19235 +4158,66373,16985 +1818,27568,63029 +84614,17578,63225 +19205,15708,36826 +32012,53379,87629 +32856,14942,64337 +18016,60724,61822 +54761,73823,48583 +83106,25756,64961 +65757,43488,38203 +78749,62993,70173 +86875,54147,88141 +63666,21390,10264 +30476,92467,44595 +19125,88235,18993 +78017,60220,17737 +93071,19588,55730 +59063,72682,69181 +87224,44088,13924 +66005,23751,31922 +88980,39834,45167 +78509,51102,91829 +59401,68465,40091 +45459,51397,12044 +66473,9442,36309 +65069,15196,65759 +85308,32638,29853 +62000,67707,97242 +48909,13162,44690 +94177,54682,89759 +94472,7887,90558 +7938,32886,42255 +31220,82743,8623 +4759,69634,86895 +50396,21281,97929 +23922,95150,42176 +6091,72367,97587 +27288,55327,8834 +13058,6052,77530 +44985,74489,51544 +6230,38513,59471 +57769,48607,57745 +49922,41821,37589 +2494,43322,94678 +19282,24623,17143 +6659,33024,7701 +70168,7836,36820 +91862,43051,79138 +47988,75351,70125 +19683,67546,7487 +20114,68753,28673 +7904,35529,43194 +42410,14976,31422 +15599,40991,52396 +76775,77248,33790 +20839,37107,97486 +11931,57361,25673 +39071,9859,44145 +89015,93399,75946 +79567,49888,26394 +92837,42783,42942 +52004,53457,75457 +75767,70965,32796 +32464,16183,76411 +43306,55812,29384 +33855,29210,8159 +6837,58762,75042 +57605,30857,37380 +65085,82815,91890 +14856,74920,9406 +25625,43328,64844 +94608,85859,40567 +74984,13003,33396 +49689,73248,77448 +80594,8244,91756 +99789,5527,72974 +23419,10050,12608 +12713,78846,22533 +93039,68243,89384 +19759,93011,61301 +84883,71185,79447 +9793,61226,15066 +37609,91115,627 +57615,3686,48913 +94144,1874,33797 +4383,78544,58588 +79964,4158,19256 +61917,54604,976 +24,93793,18028 +31415,72900,10767 +9479,62097,63394 +98757,2587,46814 +52030,70171,53585 +26244,69858,16325 +39051,99760,3631 +77873,88283,98603 +60008,1240,5412 +39062,65018,97147 +32895,91536,58424 +36835,60961,34634 +60461,86056,59407 +67468,86261,59152 +25928,24480,19765 +68826,51653,27939 +83154,83414,23400 +67811,19326,86209 +78104,53502,64591 +62737,39403,38689 +66553,60043,85044 +16732,59194,26415 +88445,9449,66421 +94197,35009,51242 +36105,39552,85330 +79454,71624,50984 +95843,40953,10808 +68398,61464,94340 +12120,14152,41952 +36975,76600,81646 +7473,24030,30816 +7271,3605,43830 +16474,93145,53678 +4762,81239,66686 +11881,49347,34218 +95773,47716,46691 +46136,29769,8473 +99032,16543,15501 +53408,49013,68476 +11982,65806,73955 +18239,86997,94281 +42440,24444,20591 +47162,45249,51382 +25762,61753,10515 +74755,90496,64508 +14305,75200,11911 +67350,71180,58806 +22664,46812,22494 +82363,19432,30119 +8969,50462,37642 +21770,42800,62741 +26040,27782,47040 +45904,92004,11579 +71316,59156,85875 +36775,72051,50943 +8940,53685,88668 +40392,18126,86800 +72935,39901,43559 +25559,50244,54227 +94425,43655,12692 +31938,27503,40755 +14076,17285,59476 +63546,71611,30985 +41175,40239,11209 +78808,78580,49682 +50890,48482,78859 +23978,66192,16086 +22338,69066,43682 +51682,93681,68369 +17242,89332,72471 +95359,42337,3353 +33198,75919,95782 +54920,25833,12823 +3135,84740,52676 +91811,82043,64187 +53951,1436,60181 +29973,62502,62679 +91363,33630,65967 +83232,11932,6562 +54227,49045,87520 +11224,45974,69 +72047,63595,14566 +56817,65528,9112 +21692,17477,10534 +46519,95763,50714 +52090,37098,45967 +57699,26153,80176 +63792,8106,40511 +59370,26822,40560 +65809,25475,77316 +81668,10078,31559 +98741,43987,77347 +20831,7523,18183 +87774,43707,48216 +93473,98321,33830 +86111,51483,14722 +17099,60468,21246 +90174,5586,25772 +53631,95969,72429 +61894,26905,15203 +29342,58864,59765 +94211,84480,49119 +93194,37599,66239 +40312,165,66123 +4429,17927,96046 +721,4206,64519 +72104,68700,93773 +31091,4138,75355 +53967,47126,38582 +71421,37597,13933 +19208,27090,22020 +14677,75365,36462 +80152,11670,4099 +53838,80091,71364 +24864,38000,41985 +60190,61691,82285 +67280,30800,24616 +21663,49271,4370 +28743,8185,98272 +82691,76704,9121 +2505,47302,4793 +39289,76179,60037 +71905,69223,50282 +4669,12918,25543 +16334,48317,69243 +95051,10650,70063 +16499,21145,89800 +72093,4289,6649 +8996,79415,64559 +44609,61072,62783 +61572,94857,97953 +53944,20531,67473 +51662,86936,90974 +63618,45269,7602 +81565,70046,59802 +30547,54469,56954 +6471,72605,19915 +258,21244,81791 +51041,91786,92206 +13539,38472,2396 +54577,25367,65370 +44683,67535,71770 +55084,2999,40226 +43825,17321,46763 diff --git a/src/plasl/2025/day8/input.t b/src/plasl/2025/day8/input.t new file mode 100644 index 0000000..458322a --- /dev/null +++ b/src/plasl/2025/day8/input.t @@ -0,0 +1,21 @@ +162,817,812 +57,618,57 +906,360,560 +592,479,940 +352,342,300 +466,668,158 +542,29,236 +431,825,988 +739,650,466 +52,470,668 +216,146,977 +819,987,18 +117,168,530 +805,96,715 +346,949,466 +970,615,88 +941,993,340 +862,61,35 +984,92,344 +425,690,689 + diff --git a/src/plasl/2025/day8/part1.psl b/src/plasl/2025/day8/part1.psl new file mode 100644 index 0000000..4056972 --- /dev/null +++ b/src/plasl/2025/day8/part1.psl @@ -0,0 +1,337 @@ + +i64 write(i32, ptr i8, u64) { + `scsbsa` + syscall3(i64(1), `la` as i64, `lb` as i64, `lc` as i64) +} + +i64 read(i32, ptr i8, u64) { + `scsbsa` + syscall3(i64(0), `la` as i64, `lb` as i64, `lc` as i64) +} + +i32 open(ptr i8, i32, i32) { + `scsbsa` + syscall3(i64(2), `la` as i64, `lb` as i64, `lc` as i64) + as i32 +} + +ptr i8 mmap(ptr i8, u64, i32, i32, i32, i64) { + `sfsesdscsbsa` + syscall6(i64(9), `la` as i64, `lb` as i64, `lc` as i64, `ld` as i64, `le` as i64, `lf`) + as ptr i8 +} + +void exit(i32) { + as i64 i64(231) rev + syscall1 trash +} + +void putc(i8) { + array i8[1] `dstr` store + write(1, `lt`, u64(1)) trash +} + +u64 strlen(ptr i8) { + dup while(dup load i8(0) !=) { 1+ } `r-` +} + +void print(ptr i8) { + 1 rev dup strlen write trash +} + +void println(ptr i8) { + print i8(10) putc +} + +void printnum(i32) { + + if (dup 0 ==) { + putc('0') + } else if (dup 0 <) { + `0r-` '-' putc + } + + array i8[11] 10+ dup i8(0) store -1+ `sb` + + while (dup 0 !=) { + 10 divmod 48+ as i8 + `lb` rev store + `lb` -1+ `sb` + } trash + print(`lb`1+) + +} + +void printnum64(u64) { + + if (dup u64(0) ==) { + putc('0') + } + + array i8[22] 21+ dup i8(0) store -1+ `sb` + + while (dup u64(0) !=) { + u64(10) divmod u64(48)+ as i8 + `lb` rev store + `lb` -1+ `sb` + } trash + + print(`lb`1+) + +} + +i32 atoi(ptr i8) { + set string + 0 + while (get string load '0' >= get string load '9' <= &) { + 10* get string load '0'- as i32 + + get string 1+ set string + } +} + +u64 atol(ptr i8) { + set string + u64(0) + while (get string load '0' >= get string load '9' <= &) { + u64(10)* get string load '0'- as u64 + + get string 1+ set string + } +} + + +i32 abs(i32) { + if (dup 0 <) {`0r-`} +} + +ptr i8 memset(ptr i8, i32, u64) { + `sn` as i8 `sc` + + u64(0) `si` + while (`liln` < ) { + `1+dlc` store + inc(i) + } +} + +void heap_add(u64, i32, i32, ptr u64, ptr i32, ptr i32) { + `sysx` set heap set vy set vx set value + heap[0] load set size + + heap[get size] get value store + y[get size] get vy store + x[get size] get vx store + + get size as i32 set index + # swap while not heaped + while(get index 0 > heap[get index] load heap[get index 2/] load < &) { + + heap[get index] set t1 heap[get index 2/] set t2 + get t1 load get t2 load get t1 rev store get t2 rev store + + x[get index] `ds.` load x[get index 2/] `ds,` load `l.r` store `l,r` store + y[get index] `ds.` load y[get index 2/] `ds,` load `l.r` store `l,r` store + + get index 2/ set index + } + + heap[0] dup load u64(1)+ store + +} + +void heap_pop(ptr u64, ptr i32, ptr i32) { + `sysx` set heap + + heap[0] dup load u64(1) - dup as i32 set size store + + heap[1] heap[get size 1-] load store # set the heap[0] as last heap element + y[1] y[get size 1-] load store + x[1] x[get size 1-] load store + + u1(1) set cont + `1si` + + # down heap + while (get cont) { + + `li` set nexti + + if (`li2*` get size < heap[get nexti] load heap[`li2*`] load > &) { + `li2*` set nexti + } + if (`li2*1+` get size < heap[get nexti] load heap[`li2*1+`] load > &) { + `li2*1+` set nexti + } + + if (`li` get nexti !=) { + + heap[get i] `ds.` load heap[get nexti] `ds,` load `l.r` store `l,r` store + x[get i] `ds.` load x[get nexti] `ds,` load `l.r` store `l,r` store + y[get i] `ds.` load y[get nexti] `ds,` load `l.r` store `l,r` store + + get nexti set i + } else { + u1(0) set cont + } + + } + +} + + +void _start() { + + open("input", 0, 0) set file + array i8[65535] set buffer + get buffer i8(48) store + read(get file, get buffer, u64(65535)) as i32 set size + #get buffer get size+ i8(10) store + + array i32[1024] set px + array i32[1024] set py + array i32[1024] set pz + + u64(0) `so` + + `0si0sc` + while (`li` get size 1- < ) { + + atoi(buffer[`li`]) px[`lc`] `r` store + while (buffer[`li`] load ',' !=) {inc(i)} inc(i) + + atoi(buffer[`li`]) py[`lc`] `r` store + while (buffer[`li`] load ',' !=) {inc(i)} inc(i) + + atoi(buffer[`li`]) pz[`lc`] `r` store + while (buffer[`li`] load i8(10) !=) {inc(i)} inc(i) + + inc(c) + } + + + pz[0] load py[0] load px[0] load + printnum ',' putc printnum ',' putc printnum i8(10) putc + println("distance calculation...") + + mmap(u64(0) as ptr i8, u64(2048) u64(4096) *, 2 1|, 32 2|, 0, i64(0)) as ptr u64 set dist + + dist[524800] as ptr i32 set dist_p1 + dist_p1[524800] set dist_p2 + + dist[0] u64(1) store + + `0si` + while (`lilc` < ) { + `li1+sj` + while (`ljlc` <) { + #`liljr` printnum ',' putc printnum i8(10) putc + + heap_add( + abs(px[`li`] load px[`lj`] load -) as u64 `d*` + abs(py[`li`] load py[`lj`] load -) as u64 `d*` + + abs(pz[`li`] load pz[`lj`] load -) as u64 `d*` +, + get i, get j + get dist, get dist_p1, get dist_p2 + ) + + inc(j) + } + inc(i) + } + + + println("chain joining...") + + array i32[1024] set links + memset(get links as ptr i8, 0, 4 1024* as u64) trash + array i32[1024] set linkcount + memset(get linkcount as ptr i8, 0, 4 1024* as u64) trash + 0 set numlinks + + `0si` + while (`li` 1000 <) { + #dist[0] load printnum64 ' ' putc + #dist[1] load printnum64 ',' putc + #dist_p1[1] load printnum ',' putc + #dist_p2[1] load printnum i8(10) putc + + dist_p1[1] load set p1 dist_p2[1] load set p2 + + if (links[get p1] load 0 == links[get p2] load 0 == &) { + # create a new link between these unlinked posts + inc(numlinks) + links[get p1] get numlinks store + links[get p2] get numlinks store + + linkcount[get numlinks] dup load 2+ store + + } else if (links[get p1] load 0 != links[get p2] load 0 == &) { + # link p2 to p1's link + links[get p2] links[get p1] load store + linkcount[links[get p1] load] dup load 1+ store + } else if (links[get p1] load 0 == links[get p2] load 0 != &) { + # link p1 to p2's link + links[get p1] links[get p2] load store + linkcount[links[get p2] load] dup load 1+ store + } else if (links[get p1] load links[get p2] load !=){ + # big annoying link + + links[get p1] load set into + links[get p2] load set from + + + linkcount[get into] dup load linkcount[get from] load + store + linkcount[get from] 0 store + + `0sj` + while (`ljlc`<) { + if(links[`lj`] load get from ==) { + links[`lj`] get into store + } + inc(j) + } + } + + + heap_pop(get dist, get dist_p1, get dist_p2) + inc(i) + } + + println("finding largest...") + + array i32[3] set biggest + memset(get biggest as ptr i8, 0, 4 3* as u64) trash + + `0si` + while (`li` get numlinks 1+<) { + + `0sj` + + linkcount[`li`] load set ccount + + while (`lj` 3 < ) { + if (biggest[`lj`] load get ccount <) { + get ccount biggest[`lj`] dup load set ccount rev store + } + inc(j) + } + inc(i) + } + + + `0si` + 1 + while (`li` 3 <) { + printnum(biggest[`li`] load) i8(10) putc + biggest[`li`] load * + inc(i) + } + + println("answer:") + printnum64(as u64) + + exit(0) +} + +void main() { + _start +} diff --git a/src/plasl/2025/day8/part2.psl b/src/plasl/2025/day8/part2.psl new file mode 100644 index 0000000..b92fcfb --- /dev/null +++ b/src/plasl/2025/day8/part2.psl @@ -0,0 +1,375 @@ + +i64 write(i32, ptr i8, u64) { + `scsbsa` + syscall3(i64(1), `la` as i64, `lb` as i64, `lc` as i64) +} + +i64 read(i32, ptr i8, u64) { + `scsbsa` + syscall3(i64(0), `la` as i64, `lb` as i64, `lc` as i64) +} + +i32 open(ptr i8, i32, i32) { + `scsbsa` + syscall3(i64(2), `la` as i64, `lb` as i64, `lc` as i64) + as i32 +} + +ptr i8 mmap(ptr i8, u64, i32, i32, i32, i64) { + `sfsesdscsbsa` + syscall6(i64(9), `la` as i64, `lb` as i64, `lc` as i64, `ld` as i64, `le` as i64, `lf`) + as ptr i8 +} + +void exit(i32) { + as i64 i64(231) rev + syscall1 trash +} + +void putc(i8) { + array i8[1] `dstr` store + write(1, `lt`, u64(1)) trash +} + +u64 strlen(ptr i8) { + dup while(dup load i8(0) !=) { 1+ } `r-` +} + +void print(ptr i8) { + 1 rev dup strlen write trash +} + +void println(ptr i8) { + print i8(10) putc +} + +void printnum(i32) { + + if (dup 0 ==) { + putc('0') + } else if (dup 0 <) { + `0r-` '-' putc + } + + array i8[11] 10+ dup i8(0) store -1+ `sb` + + while (dup 0 !=) { + 10 divmod 48+ as i8 + `lb` rev store + `lb` -1+ `sb` + } trash + print(`lb`1+) + +} + +void printnum64(u64) { + + if (dup u64(0) ==) { + putc('0') + } + + array i8[22] 21+ dup i8(0) store -1+ `sb` + + while (dup u64(0) !=) { + u64(10) divmod u64(48)+ as i8 + `lb` rev store + `lb` -1+ `sb` + } trash + + print(`lb`1+) + +} + +i32 atoi(ptr i8) { + set string + 0 + while (get string load '0' >= get string load '9' <= &) { + 10* get string load '0'- as i32 + + get string 1+ set string + } +} + +u64 atol(ptr i8) { + set string + u64(0) + while (get string load '0' >= get string load '9' <= &) { + u64(10)* get string load '0'- as u64 + + get string 1+ set string + } +} + + +i32 abs(i32) { + if (dup 0 <) {`0r-`} +} + +ptr i8 memset(ptr i8, i32, u64) { + `sn` as i8 `sc` + + u64(0) `si` + while (`liln` < ) { + `1+dlc` store + inc(i) + } +} + +void heap_add(u64, i32, i32, ptr u64, ptr i32, ptr i32) { + `sysx` set heap set vy set vx set value + heap[0] load set size + + heap[get size] get value store + y[get size] get vy store + x[get size] get vx store + + get size as i32 set index + #printnum(get index) '.' putc printnum(get index 2/) i8(10) putc + # swap while not heaped + while( + get index 2/ set parent + get index 1 > heap[get index] load heap[get parent] load < & + ) { + + #printnum(get index) ',' putc printnum(get parent) i8(10) putc + + + heap[get index] `ds.` load heap[get parent] `ds,` load `l.r` store `l,r` store + x[get index] `ds.` load x[get parent] `ds,` load `l.r` store `l,r` store + y[get index] `ds.` load y[get parent] `ds,` load `l.r` store `l,r` store + + get parent set index + } + + heap[0] dup load u64(1)+ store + +} + +void heap_pop(ptr u64, ptr i32, ptr i32) { + `sysx` set heap + + heap[0] dup load u64(1) - dup as i32 set size store + + heap[1] heap[get size 1-] load store # set the heap[0] as last heap element + y[1] y[get size 1-] load store + x[1] x[get size 1-] load store + + u1(1) set cont + `1si` + + # down heap + while (get cont) { + + `li` set nexti + + if (`li2*` get size < heap[get nexti] load heap[`li2*`] load > &) { + `li2*` set nexti + } + if (`li2*1+` get size < heap[get nexti] load heap[`li2*1+`] load > &) { + `li2*1+` set nexti + } + + if (`li` get nexti !=) { + + heap[get i] `ds.` load heap[get nexti] `ds,` load `l.r` store `l,r` store + x[get i] `ds.` load x[get nexti] `ds,` load `l.r` store `l,r` store + y[get i] `ds.` load y[get nexti] `ds,` load `l.r` store `l,r` store + + get nexti set i + } else { + u1(0) set cont + } + + } + +} + +void check_heap(ptr u64) { + set heap + + heap[0] load as i32 set size + + `1si` + while (`li` get size <) { + + #printnum(`li`) ':'putc + #printnum64(heap[`li`]load) ' ' putc + + if (`li2*` get size < heap[`li2*`] load heap[`li`] load <&) { + #printnum64(heap[`li2*`]load) ' ' putc + exit(3) + } + + if (`li2*1+` get size < heap[`li2*1+`] load heap[`li`] load <&) { + #printnum64(heap[`li2*1+`]load) ' ' putc + exit(3) + } + + inc(i) + } + i8(10) putc + +} + + +void _start() { + + open("input", 0, 0) set file + array i8[65535] set buffer + get buffer i8(48) store + read(get file, get buffer, u64(65535)) as i32 set size + #get buffer get size+ i8(10) store + + array i32[1024] set px + array i32[1024] set py + array i32[1024] set pz + + u64(0) `so` + + `0si0sc` + while (`li` get size 1- < ) { + + atoi(buffer[`li`]) px[`lc`] `r` store + while (buffer[`li`] load ',' !=) {inc(i)} inc(i) + + atoi(buffer[`li`]) py[`lc`] `r` store + while (buffer[`li`] load ',' !=) {inc(i)} inc(i) + + atoi(buffer[`li`]) pz[`lc`] `r` store + while (buffer[`li`] load i8(10) !=) {inc(i)} inc(i) + + inc(c) + } + + + #pz[0] load py[0] load px[0] load + #printnum ',' putc printnum ',' putc printnum i8(10) putc + println("distance calculation...") + + mmap(u64(0) as ptr i8, u64(2048) u64(4096) *, 2 1|, 32 2|, 0, i64(0)) as ptr u64 set dist + + dist[524800] as ptr i32 set dist_p1 + dist_p1[524800] set dist_p2 + + dist[0] u64(1) store + + `0si` + while (`lilc` < ) { + `li1+sj` + while (`ljlc` <) { + #`liljr` printnum ',' putc printnum i8(10) putc + + heap_add( + abs(px[`li`] load px[`lj`] load -) as u64 `d*` + abs(py[`li`] load py[`lj`] load -) as u64 `d*` + + abs(pz[`li`] load pz[`lj`] load -) as u64 `d*` +, + get i, get j + get dist, get dist_p1, get dist_p2 + ) + + #check_heap(get dist) + #check_heap(get dist) + + inc(j) + } + inc(i) + } + + + println("chain joining...") + + array i32[1024] set links + memset(get links as ptr i8, 0, 4 1024* as u64) trash + array i32[1024] set linkcount + memset(get linkcount as ptr i8, 0, 4 1024* as u64) trash + 0 set numlinks + + 0 set maxl + + 0 set clink + + `0s10s2` + `0si` + while (get maxl `lc` !=) { + dist_p1[1] load `s1` + dist_p2[1] load `s2` + + #dist[0] load printnum64 ' ' putc + #dist[1] load printnum64 ',' putc + #dist_p1[1] load printnum ',' putc + #dist_p2[1] load printnum ',' putc + #printnum64(px[`l1`] load as u64 px[`l2`] load as u64 *) ')' putc + #printnum(get maxl) + #i8(10) putc + + dist_p1[1] load set p1 dist_p2[1] load set p2 + + if (links[get p1] load 0 == links[get p2] load 0 == &) { + # create a new link between these unlinked posts + inc(numlinks) + links[get p1] get numlinks store + links[get p2] get numlinks store + + linkcount[get numlinks] dup load 2+ store + + get numlinks set clink + + } else if (links[get p1] load 0 != links[get p2] load 0 == &) { + # link p2 to p1's link + links[get p2] links[get p1] load store + linkcount[links[get p1] load] dup load 1+ store + + links[get p1] load set clink + + } else if (links[get p1] load 0 == links[get p2] load 0 != &) { + # link p1 to p2's link + links[get p1] links[get p2] load store + linkcount[links[get p2] load] dup load 1+ store + + links[get p2] load set clink + + } else if (links[get p1] load links[get p2] load !=){ + # big annoying link + + links[get p1] load set into + links[get p2] load set from + + linkcount[get into] dup load linkcount[get from] load + store + linkcount[get from] 0 store + + `0sj` + while (`ljlc`<) { + if(links[`lj`] load get from ==) { + links[`lj`] get into store + } + inc(j) + } + + + get into set clink + + } + + if (get maxl linkcount[get clink] load <) { + linkcount[get clink] load set maxl + } + + heap_pop(get dist, get dist_p1, get dist_p2) + inc(i) + } + + `0si` + while (`li` get numlinks 1+ <) { + #printnum(linkcount[`li`] load) i8(10) putc + inc(i) + } + + + + println("answer:") + printnum64(px[`l1`] load as u64 px[`l2`] load as u64 *) + + exit(0) +} + +void main() { + _start +}