diff --git a/2025/08/input_final.txt b/2025/08/input_final.txt new file mode 100644 index 0000000..bbc3de1 --- /dev/null +++ b/2025/08/input_final.txt @@ -0,0 +1,1000 @@ +33743,45026,72397 +72719,98780,20549 +51057,68947,37888 +60102,22732,66259 +5719,49190,82998 +91589,86280,35088 +45278,85163,80757 +51136,52189,75686 +65886,76001,22754 +70374,17698,69348 +29319,16130,8675 +5457,48812,16077 +12985,54185,59679 +54214,49484,98631 +1810,77031,68738 +96505,95854,55379 +44131,79889,39589 +42615,61818,89668 +91792,10160,56333 +76723,93193,72040 +2195,94095,4409 +62990,24084,1224 +2813,56361,13771 +3153,34521,58756 +58793,30901,70177 +97214,71295,12337 +40204,85371,13805 +90523,98238,69688 +18111,75084,72513 +82150,82824,94512 +51125,67258,71214 +88015,16065,78401 +53354,95473,95268 +10452,92490,86004 +65117,24372,45391 +98612,75976,37682 +67945,43197,29542 +77621,11456,44068 +42875,86666,90400 +69951,44469,11838 +60448,29598,62299 +17893,85317,67635 +52454,22285,94864 +44589,45084,27793 +54323,53323,37582 +12302,18594,13033 +74126,48596,36469 +94651,17276,58665 +80819,97889,37709 +34289,3368,1452 +39403,70118,70457 +2156,61755,87650 +11119,5230,89838 +73009,65143,13016 +87028,92055,29252 +20176,88771,80727 +68914,74602,55741 +73516,54957,20119 +42795,29518,43586 +42160,56135,33422 +99434,84654,24253 +92238,50194,65855 +23270,60441,2481 +64688,69297,13768 +68971,75975,9636 +51315,91241,92704 +21778,47024,58967 +92929,20114,44517 +49611,16307,1350 +6933,51740,65267 +52421,98244,5801 +64921,41065,1181 +47481,46812,96385 +24756,77409,69023 +22277,41226,96452 +60066,23197,26750 +35627,38850,32755 +84789,3835,57183 +39281,68321,63235 +75290,87772,11933 +91847,82113,88487 +52952,84673,29464 +83231,90824,89458 +57912,61015,74059 +40652,49520,94976 +46432,97019,71759 +7815,49845,64692 +53232,99064,5634 +90881,6870,65170 +53459,94437,43229 +64025,55603,91296 +75303,65751,1973 +16709,38029,58047 +18865,15874,38544 +49626,73202,1997 +26526,21553,17994 +80404,63783,91549 +78124,31468,66155 +78755,75732,89020 +53004,29321,28426 +57533,35731,564 +72153,76486,99227 +12062,3702,67652 +22736,85608,59508 +26830,69708,86998 +40844,40280,71875 +96158,17520,94560 +89399,8635,39386 +91719,46763,71369 +17150,97435,99671 +85184,873,13149 +59849,41547,49240 +32986,97029,73704 +97752,88182,7045 +84032,65920,94979 +14528,97567,97893 +63092,2968,93808 +77330,30534,94569 +87772,54466,14146 +50331,90077,43928 +83755,15976,43004 +7800,19535,92722 +43859,5558,17620 +80470,62487,35717 +96958,93873,91003 +92447,92179,34145 +30342,31965,12188 +58473,90067,70429 +4291,98009,20512 +88505,98774,59700 +95140,82934,61684 +8385,47269,6774 +54575,66858,39973 +65697,72534,22678 +7905,65450,96873 +72849,71649,26604 +80592,29004,51395 +27853,64604,5685 +29577,2745,65499 +9140,59697,80738 +53567,70852,38700 +29485,58076,43460 +46752,58153,58504 +12056,74630,82267 +91195,13791,64380 +18864,74504,96706 +62750,80821,18245 +55532,53944,14013 +79470,29515,93402 +77630,83259,33920 +98002,2801,79224 +72625,70899,87725 +19476,70980,7121 +48340,47323,3964 +65357,55282,86353 +29494,23585,53240 +32769,76817,3265 +93965,29037,68209 +35999,75072,40535 +53122,15210,82641 +58790,18582,76541 +95544,12193,70565 +57326,45782,8100 +97458,16128,4034 +46926,69289,36805 +98814,9951,62437 +81835,96054,6791 +47870,1199,92620 +87207,37025,95594 +80343,44384,40189 +96272,48567,15072 +81245,73547,34377 +75879,4927,57791 +35675,37281,60042 +31384,47511,97917 +97638,78919,4915 +74993,66557,12572 +43324,12956,51689 +86787,62132,66248 +90327,93593,78360 +84372,28835,69302 +30735,13433,81429 +23147,73108,90060 +12808,16429,28002 +96358,50810,20700 +42920,81150,10002 +78940,54796,29366 +64275,93910,61464 +81181,90185,2019 +77429,2277,33066 +34082,7428,80248 +47172,61116,62576 +47099,77453,14199 +16319,88508,84428 +13133,11382,15026 +41460,45016,83583 +13948,33878,77225 +27285,31605,66598 +41277,42661,20390 +97458,76471,43594 +21858,90422,12325 +72189,3488,60498 +4120,31460,61694 +21725,19217,70242 +94802,63546,26309 +6668,17131,58379 +33904,70326,67041 +35043,96903,54537 +78623,56102,95117 +63762,67171,81034 +39496,96213,84276 +26830,80314,36202 +48332,136,46630 +26791,52686,43927 +3370,22162,6361 +42018,56968,65927 +13925,58118,3650 +30811,52210,55953 +97359,75018,35392 +82811,13685,98682 +67670,82244,18711 +11489,88272,90387 +79886,80542,98525 +23905,12022,10377 +89796,72086,63557 +98322,36663,98498 +64139,6180,86772 +53245,67910,29894 +30617,10795,1543 +33752,16567,22963 +20908,34327,42655 +5744,74836,76106 +93218,32661,93424 +78410,39755,58247 +56695,59054,18357 +41537,47567,50364 +65684,31278,61615 +27912,9309,38592 +90954,20999,91855 +87166,47104,79832 +70074,50671,59337 +40022,85805,68173 +22848,66886,4759 +53878,62132,35763 +67801,71975,76888 +29588,87617,41774 +3310,20261,48523 +35266,26021,68347 +59051,67897,33481 +88494,53696,4416 +11366,11202,12653 +72469,98164,40473 +45196,15960,89465 +90187,74893,23514 +21891,47955,42380 +31677,14299,95829 +56019,51199,8130 +33783,32245,73110 +66218,39489,68463 +30832,41005,31104 +32533,78601,60112 +16696,67338,74753 +46328,42229,37984 +62257,56967,31078 +66523,26262,6692 +22400,36697,88753 +10549,8145,23401 +9756,28195,72474 +30915,90461,4031 +926,65475,80423 +24838,36320,34541 +44105,70214,65354 +52912,34113,20688 +63671,48299,93029 +43330,62276,32445 +83401,69645,17245 +32703,48100,60465 +25107,40177,79451 +57967,74142,8847 +25371,16300,17400 +53455,60862,85635 +95834,17531,81880 +76082,92992,75296 +40547,19286,18503 +58342,92272,68701 +62855,58795,99553 +71577,46058,12052 +68421,14203,67454 +43460,42776,89747 +11865,22045,61838 +88272,51151,80630 +85703,29526,11991 +73505,4347,89941 +36047,70905,83583 +49682,2774,62678 +36378,58196,96710 +22957,84827,87188 +98540,92757,44200 +78178,44317,70134 +89010,63300,1512 +67853,77493,28309 +39011,48968,16465 +26814,45243,81926 +46917,45940,62679 +51947,51273,62365 +35405,15737,7639 +31027,800,15909 +2360,78806,27244 +61561,19292,64849 +1699,96889,38421 +45557,87784,92809 +35420,93928,4278 +12505,91600,63272 +52642,83676,16172 +18085,51147,3682 +92087,39249,2236 +62522,76890,25955 +33137,79035,91236 +87704,50306,51997 +82173,41308,43241 +57202,54347,90395 +58772,8702,70121 +79173,53345,15132 +55880,33997,67325 +25728,44671,62006 +65445,83627,89698 +87235,53587,2513 +5299,13072,30566 +5385,14819,93006 +20212,18166,92821 +26712,73236,85271 +93182,28503,39014 +66820,17627,13311 +7108,17829,40150 +29854,69029,26517 +2407,30546,78207 +72730,658,86870 +5337,36773,15287 +41917,26290,55386 +84447,88169,8553 +54202,91236,88537 +11919,36907,42244 +37307,11094,40428 +39736,20852,17121 +65356,41489,66495 +95619,12018,14899 +13179,90874,28473 +4956,46065,93513 +77169,37012,8544 +25035,56816,9454 +37608,87664,33016 +37376,95529,40996 +15731,65418,92407 +92909,16534,42400 +53752,5959,45626 +72516,37928,49262 +1131,89946,19479 +8902,32405,65386 +85502,63120,50784 +403,17101,75471 +43186,49363,34122 +22287,73561,6195 +17370,90611,80405 +89185,88284,19880 +55784,69163,98509 +20841,21805,90099 +38912,65106,67603 +84873,24356,69514 +26183,58639,3155 +93363,22267,96932 +11562,60587,15356 +12048,78399,20654 +65986,8879,43969 +74216,26484,77695 +3367,35447,73065 +86420,6368,51050 +65714,86830,34920 +84884,21829,88580 +52195,41054,84040 +20606,43069,91624 +30893,52742,90096 +97519,39360,10585 +98590,32639,42459 +85642,72838,7150 +4871,30761,77811 +21927,49547,80017 +98689,3143,33296 +43642,37329,65362 +77483,84929,90208 +29722,88849,79045 +17757,97806,46445 +6717,98258,13812 +14421,31002,20095 +70132,61506,7059 +90116,52349,10168 +55515,60893,26927 +99373,94827,19702 +42228,61489,39925 +53124,4455,86882 +79197,45232,63890 +69333,93232,78492 +82815,95337,62914 +55040,79356,3815 +75971,13931,46268 +6892,6662,85783 +20763,23357,48096 +50085,41343,44419 +88159,68992,26458 +75843,63822,92829 +73622,94739,12912 +21635,28293,25749 +83482,70224,50963 +96507,7455,4315 +5925,31744,4200 +76747,63476,8757 +40512,6762,1826 +32991,33529,74292 +88682,23817,72623 +84400,34095,89156 +43224,35095,24079 +39200,30637,62114 +53304,59093,43893 +55627,78706,57072 +39857,41676,64273 +96234,15530,92464 +364,37040,23707 +97914,74029,84908 +13810,71225,75712 +88245,98438,25294 +33152,41128,47471 +97907,16842,50131 +48716,1388,9287 +53819,88277,58293 +39709,77753,68830 +66653,68824,48044 +31743,25571,47418 +17147,93852,80931 +45558,10455,74199 +8910,54434,28985 +25209,6242,43617 +29025,9753,66454 +26602,94682,75965 +82773,56018,64068 +18066,22521,10337 +79925,85587,23060 +96048,41553,17897 +51481,21096,75008 +83223,97712,1337 +45398,91740,33141 +20219,27625,69427 +20112,36321,87662 +97205,53422,90864 +7499,96870,71270 +23208,88376,73697 +15877,30352,85943 +49466,61728,27425 +31961,22184,54318 +37818,68262,72332 +25228,23718,77323 +59990,10609,39782 +61145,4289,43876 +43438,27876,90064 +38166,53570,62497 +60569,99092,76453 +29381,29441,31478 +33048,27581,49835 +7174,27146,67901 +78972,16121,99331 +89134,58103,14524 +59827,81093,21846 +36888,84636,37367 +58418,40989,77244 +50920,59985,84067 +33553,72047,47029 +76212,24712,28708 +84641,53481,12754 +23410,64336,53600 +2010,54559,30297 +44580,77524,1171 +32013,49191,95343 +72260,79498,62723 +31471,71683,26494 +78640,12450,8130 +70276,6679,94396 +82118,13402,94511 +15379,77635,7537 +90490,62564,47504 +87496,18214,97525 +7187,95147,70016 +5425,91572,98410 +76154,44160,10116 +86383,18769,93385 +85595,93655,48086 +49002,35699,96979 +25138,92294,60702 +77319,77091,33309 +17937,37272,63625 +92084,78686,65371 +35327,28527,86870 +97690,26442,59327 +33883,16647,87356 +38677,69370,65383 +88582,16515,24415 +32342,43801,94499 +98607,58775,19506 +54415,74982,46258 +52055,47777,71835 +41630,47541,78154 +15309,73046,27901 +31315,44656,18455 +29394,72504,18477 +42342,92167,27740 +26568,19100,76393 +47356,81604,22964 +39900,48561,47433 +51951,41604,90458 +87656,33229,36057 +23893,97356,42338 +77460,11275,21663 +40974,1342,42748 +3550,75595,32287 +7122,27205,79993 +24570,64033,96869 +32701,65899,20789 +79766,48400,13819 +39141,38058,40462 +29377,87426,22391 +8793,77613,48473 +19068,57955,72223 +87736,56038,80135 +9571,56288,28427 +86241,11279,34355 +2168,96903,35106 +30931,71247,19347 +20071,18816,58268 +12323,67264,60803 +64266,51058,74758 +37594,48417,39404 +10186,20363,84207 +14335,23359,97453 +30411,56027,43358 +5000,33819,57915 +28652,72711,58632 +48445,17584,58789 +4060,58191,71978 +49990,17504,31355 +94437,64944,53226 +23500,95071,49675 +34273,62089,65021 +55213,94209,72672 +156,57496,51790 +61484,90920,21503 +79596,60028,24712 +34552,92093,64640 +20561,80702,1013 +74965,56628,99554 +69803,51046,47507 +51974,73872,65843 +45443,93765,54708 +61616,25118,20770 +41335,95183,38321 +20784,24874,4541 +25467,88197,30824 +29475,48084,93584 +77708,57523,15137 +33819,285,46980 +35690,49358,15448 +8169,64809,9646 +26116,62562,86963 +50838,90248,42375 +7984,39329,53777 +58224,97809,36917 +84508,47809,32240 +55217,83984,74461 +33184,18203,63450 +97467,59647,52009 +74027,14517,81955 +3610,88147,35270 +1224,57198,55519 +90208,96704,85576 +51088,93539,82514 +99064,1617,47421 +89980,56126,10930 +8284,15219,86683 +99136,96988,56731 +73735,58282,62315 +33229,3208,93951 +42395,6360,51887 +40122,78568,20549 +53652,81688,39574 +17266,94139,6919 +6349,33247,1455 +9980,46062,71751 +57712,23555,91820 +57947,74281,43369 +16858,89804,87817 +2839,663,55298 +18870,17497,82562 +65636,8477,37145 +75253,1719,30104 +81183,34915,64705 +33940,41382,34375 +13754,23890,55404 +45407,96384,14530 +24938,83290,31503 +80994,21705,61053 +8151,83428,56820 +40027,3044,96463 +61603,321,51052 +21611,73363,37584 +41390,98176,81298 +61230,79036,31088 +58312,18452,67596 +66795,41546,74795 +85068,11604,73820 +30777,37888,60963 +40343,62626,67777 +99400,29180,19183 +28692,15213,73565 +44657,52126,23228 +51546,94388,34749 +94913,90214,66938 +45553,95007,53480 +47456,95007,25117 +53559,83928,97018 +80384,75835,46913 +98552,58324,17208 +21319,19948,38575 +9928,26017,241 +47508,74104,83994 +72513,76230,69512 +55770,8443,80897 +88510,23098,47390 +48186,91197,12663 +94499,46235,68787 +25657,54146,1796 +76860,23903,74497 +56817,57378,51816 +30404,70013,92328 +64103,12377,88690 +28442,59109,9937 +4547,98566,78648 +2323,82176,3145 +57578,79875,70207 +37343,84865,80208 +58268,83634,56263 +6636,66000,84059 +54535,7628,57273 +54529,23444,98199 +79244,69173,7227 +42878,74401,84846 +97927,48981,97835 +74022,72879,24648 +62392,13018,56769 +82724,2771,26919 +14218,46253,94812 +12934,65990,68806 +38098,60987,34841 +90898,35305,19960 +15162,37721,8741 +46515,37189,31777 +37887,42409,64193 +62710,87942,77456 +36104,74733,11263 +96202,11211,6207 +25580,74282,78337 +35760,16181,78237 +24100,52113,36174 +63482,66093,783 +29025,37477,65122 +57957,11164,7798 +33586,10985,97088 +11848,77928,64549 +43848,90691,79606 +53354,31423,73716 +99397,95022,77367 +3539,16190,13174 +31675,67078,4869 +59996,86212,44679 +53759,62868,13968 +79952,15772,6485 +19911,17702,31735 +82531,51091,74232 +92735,68117,5415 +36,16075,51071 +65980,8559,56117 +78144,74601,87844 +95489,183,91047 +2987,88865,70936 +70498,46134,21352 +23553,61731,36563 +88247,76355,73028 +39137,39804,15379 +28113,99185,93043 +19369,77065,5771 +67436,26511,31377 +15576,97190,48289 +35108,44640,50593 +60662,50381,65084 +6661,6548,42869 +5432,7543,25635 +76974,24340,97663 +51269,29399,13363 +49327,31955,69800 +37277,11197,37306 +61860,18077,6787 +70912,89016,42964 +89449,63272,15286 +19201,34075,41527 +48304,72575,89497 +31418,76315,37012 +59035,44497,51369 +14146,6642,80580 +33490,61165,84425 +32436,61807,13866 +90543,9841,30446 +32303,50084,54483 +57869,70846,39036 +60924,19540,32577 +67818,37603,50428 +12619,7916,66790 +40443,66554,85964 +54491,30597,41884 +14158,97381,48114 +73671,55264,50687 +86285,93973,92868 +20707,70134,20122 +52122,61050,46656 +33998,79354,50283 +82085,15420,77918 +18876,36153,52858 +26825,68391,51459 +86914,93799,49719 +45692,92100,37536 +98704,15531,24068 +69178,46366,57574 +39000,80610,51541 +26690,73634,19172 +41427,92834,85328 +93269,80331,19934 +26666,81305,29669 +68859,31515,88802 +35011,43471,22458 +86490,75249,15378 +25201,66414,98825 +51678,43690,63987 +93530,91967,63153 +32878,49641,34651 +13151,37482,26156 +35279,92141,61654 +95975,86467,54698 +62571,33826,68301 +2608,25822,2947 +8969,69282,18243 +75917,61852,58048 +67322,10472,91768 +18115,31458,88049 +19209,85234,33415 +8213,17360,9555 +61846,39393,7628 +62020,62717,30854 +91067,88180,36509 +43907,66445,38733 +78667,15544,71911 +87939,83282,4494 +93058,81672,14388 +19676,72296,77720 +9709,1968,45269 +32726,49643,31641 +2003,97377,14526 +1752,1312,37863 +87972,19811,55053 +54939,98652,40405 +87353,9052,40032 +55698,76849,31646 +63463,71353,16334 +49089,7837,16127 +3318,20455,45553 +94585,81692,86921 +83794,16180,33874 +5772,39256,68666 +14914,42186,88309 +49814,85604,77442 +855,5021,46730 +62071,70208,18256 +77383,60387,11717 +74254,8426,50973 +85368,7613,9513 +32798,1521,12206 +71902,44061,50645 +36648,36983,420 +97281,99407,54966 +59485,42590,33221 +82629,92204,69079 +1853,11795,847 +73401,13659,197 +43505,89151,3207 +33137,76729,36983 +7507,29032,41123 +4786,7924,47148 +58741,78510,74182 +62129,29320,12507 +1045,74212,97229 +95639,6024,74748 +78225,32905,59561 +4106,58219,90723 +97259,12320,95170 +84861,47978,76878 +13456,13873,29611 +82430,13414,63487 +85973,13651,76825 +70601,17038,86877 +79367,1490,24680 +83205,95032,92774 +8916,37987,41070 +85749,43452,3154 +29946,5657,30781 +12944,61048,77056 +90240,37030,69733 +49037,10412,41848 +26802,24835,6989 +28227,46163,39742 +65212,6071,62377 +19593,22155,72494 +9630,35718,8053 +3972,97670,77106 +30802,64067,93217 +8428,56117,82164 +83500,15244,24232 +24394,5056,42521 +7925,62265,49927 +66853,75755,36985 +24211,59586,87324 +15392,92902,70274 +36947,67094,39579 +6211,40140,49695 +40065,92828,49612 +40727,63466,55699 +9038,79819,90335 +71998,32702,93904 +72005,47481,5272 +41401,43935,4065 +60529,80173,73059 +28581,42168,98603 +39569,70590,8904 +41993,78939,67471 +94485,68165,93702 +69415,9184,9989 +66038,82235,292 +49549,93247,8729 +16735,92916,36410 +62132,27490,7529 +27414,30288,69920 +60802,57333,64538 +85886,885,57101 +51025,88518,3846 +44084,37650,77462 +88921,10922,51011 +36301,70500,68401 +53452,42477,76065 +65784,90194,51563 +49568,20578,35132 +77082,74104,16955 +6294,31467,63196 +26587,28480,69339 +71441,67607,31918 +41377,80328,23384 +97749,24815,99266 +71080,70228,8681 +43478,25241,23053 +30404,75618,40433 +85351,52148,25613 +90102,99340,96294 +92463,98487,35600 +78561,13984,64332 +85987,11229,87370 +98932,77290,92133 +4983,86199,37316 +2805,35690,25428 +86444,45735,24993 +69673,74868,4527 +98523,83690,7034 +58406,81144,36053 +85387,3266,93061 +27069,52556,4066 +13621,24673,5220 +38792,71602,63441 +49055,19961,46085 +36325,42826,17979 +94982,90676,91781 +37327,22917,70907 +19056,80987,52792 +72121,15773,95419 +53092,61635,8001 +5117,89485,30563 +69946,31463,50877 +88481,70529,64282 +29059,58054,32843 +96577,71327,64460 +58750,85660,35932 +36318,77661,61128 +40422,44575,5762 +32253,27572,46696 +93818,26384,77537 +82407,25368,14385 +58681,80556,37272 +99079,43645,94532 +39132,84802,77741 +35445,32291,38658 +99847,31363,81460 +94505,7297,52831 +79659,88499,28620 +50613,46051,85349 +41587,66758,49107 +49231,45199,15438 +54508,17366,64847 +7680,22043,98382 +16592,94941,52979 +75467,24945,34806 +34482,95242,17344 +62552,9153,59784 +1670,33854,57869 +8257,51339,96218 +96395,8341,27680 +73670,66130,97308 +21463,85618,82387 +53375,87104,18560 +70905,14183,24854 +81393,25874,29423 +71402,81518,7509 +65930,28970,90871 +30744,17780,70955 +36553,91353,91447 +40413,59136,14110 +81594,20480,69231 +67418,60228,25841 +86960,68265,18606 +96463,33824,43788 +14124,82253,27805 +18080,5286,38631 +35613,61978,41815 +96798,10789,84353 +56811,95748,27411 +73636,58395,3467 +62247,31333,39586 +53402,19223,33884 +86891,31052,90195 +51670,31724,20923 +59190,78866,88067 +11241,7665,26196 +71299,6016,86085 +11876,85007,53461 +51205,23844,34609 +27145,31858,77399 +25919,4343,1942 +29393,13658,63974 +75940,44983,17352 +64978,38746,21441 +40820,82256,11601 +20691,45132,40342 +94234,27035,95043 +40003,9316,46990 +44604,67162,79249 +86503,50995,80264 +52456,48117,16586 +16682,52176,72289 +267,42558,76576 +35692,18967,82007 +79703,65133,24314 +38132,9325,49798 +41696,98719,97734 +8322,92699,11466 +67310,64072,51540 +10169,32801,42291 +56034,78058,88736 +10498,43958,32309 +62768,60941,86163 +57922,84278,40372 +50716,49100,80764 +60324,12061,82653 +15522,446,5796 +16823,36320,51096 +32255,68653,47229 +44907,38908,87831 +79964,88056,95186 +60800,25209,75250 +75339,26876,95416 +12758,72164,9841 +86139,94259,37791 +19804,69716,26802 +65130,45030,80620 +26496,60512,27186 +24036,73795,7610 +33375,98059,76971 +94191,48389,90093 +93665,57994,85078 +91668,95251,30325 +20683,34458,7272 +71290,45378,11698 +83096,68990,8720 diff --git a/2025/08/input_training.txt b/2025/08/input_training.txt new file mode 100644 index 0000000..20c6fd2 --- /dev/null +++ b/2025/08/input_training.txt @@ -0,0 +1,20 @@ +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 \ No newline at end of file diff --git a/2025/08/load.sql b/2025/08/load.sql new file mode 100644 index 0000000..6f69633 --- /dev/null +++ b/2025/08/load.sql @@ -0,0 +1,22 @@ +DROP TABLE IF EXISTS boxes; + +CREATE TABLE boxes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + x INTEGER, + y INTEGER, + z INTEGER +); + +-- Temporary 3-column table for import +DROP TABLE IF EXISTS boxes_import; +CREATE TABLE boxes_import (x INTEGER, y INTEGER, z INTEGER); + +.mode csv +.separator "," +.import input_final.txt boxes_import + +-- Move into real table +INSERT INTO boxes (x, y, z) +SELECT x, y, z FROM boxes_import; + +DROP TABLE boxes_import; \ No newline at end of file diff --git a/2025/08/solve-1.sql b/2025/08/solve-1.sql new file mode 100644 index 0000000..3ea864b --- /dev/null +++ b/2025/08/solve-1.sql @@ -0,0 +1,88 @@ +-- Table to hold pairwise distances +DROP TABLE IF EXISTS box_distances; +CREATE TABLE box_distances ( + box1_id INTEGER NOT NULL, + box2_id INTEGER NOT NULL, + distance REAL NOT NULL, + PRIMARY KEY (box1_id, box2_id) +); + +INSERT INTO box_distances (box1_id, box2_id, distance) +SELECT + b1.id AS box1_id, + b2.id AS box2_id, + (b1.x - b2.x) * (b1.x - b2.x) + + (b1.y - b2.y) * (b1.y - b2.y) + + (b1.z - b2.z) * (b1.z - b2.z) AS distance +FROM boxes b1 +JOIN boxes b2 + ON b1.id < b2.id; -- ensures each pair only once, no self-pairs + +DROP TABLE IF EXISTS top_circuits; +CREATE TABLE top_circuits ( + circuit_id INTEGER NOT NULL, + node_count INTEGER NOT NULL, + PRIMARY KEY (circuit_id) +); + +INSERT INTO top_circuits (circuit_id, node_count) +WITH top_edges AS ( + SELECT box1_id, box2_id + FROM box_distances + ORDER BY distance ASC + LIMIT 1000 +), +nodes AS ( + SELECT box1_id AS node_id FROM top_edges + UNION + SELECT box2_id FROM top_edges +), +components(node_id, root) AS ( + SELECT node_id, node_id AS root + FROM nodes + + UNION + + SELECT + CASE + WHEN e.box1_id = c.node_id THEN e.box2_id + ELSE e.box1_id + END AS node_id, + c.root + FROM components c + JOIN top_edges e + ON e.box1_id = c.node_id + OR e.box2_id = c.node_id +), +final_roots AS ( + SELECT node_id, MIN(root) AS component_root + FROM components + GROUP BY node_id +), +circuits AS ( + SELECT + component_root AS circuit_id, + COUNT(*) AS node_count, + GROUP_CONCAT(node_id, ',') AS nodes_in_circuit + FROM final_roots + GROUP BY component_root +) +SELECT + circuit_id, node_count +FROM circuits limit 3; + +WITH RECURSIVE +nums AS ( + SELECT node_count AS x, row_number() OVER () AS rn FROM top_circuits +), +prod(rn, val) AS ( + SELECT rn, x FROM nums WHERE rn = 1 + UNION ALL + SELECT nums.rn, prod.val * nums.x + FROM prod + JOIN nums ON nums.rn = prod.rn + 1 +) +SELECT val AS product +FROM prod +ORDER BY rn DESC +LIMIT 1;