summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorame <[email protected]>2025-12-08 04:58:40 -0600
committerame <[email protected]>2025-12-08 04:58:40 -0600
commit213fd52a5650a591e57e3f24c7039de58dc3a7d0 (patch)
treeb592c1b1b7b6ae9562f24b2e4c8219692485e809
parent17c6acf5a7c5e84a7888f304ba799e35fdc6bcce (diff)
day 8 (part 1)
-rw-r--r--src/day-8/input.txt1000
-rw-r--r--src/day-8/part-1.zig104
2 files changed, 1104 insertions, 0 deletions
diff --git a/src/day-8/input.txt b/src/day-8/input.txt
new file mode 100644
index 0000000..de1286a
--- /dev/null
+++ b/src/day-8/input.txt
@@ -0,0 +1,1000 @@
+85745,85024,49163
+49701,97021,69974
+86108,44672,12611
+97857,40198,46149
+85447,51581,23591
+49266,93396,26631
+81670,83939,13358
+84820,38718,56611
+58890,76582,41171
+34179,63666,10776
+79802,63910,6319
+31026,22961,51059
+98828,85501,19710
+84448,55650,16999
+77672,96361,37323
+17805,99487,17520
+16142,81573,83031
+80696,46143,85936
+83372,91566,71701
+75491,73510,15905
+72610,6841,71331
+85170,95694,14313
+62209,44255,48636
+56726,939,15793
+48531,88931,29192
+34368,1068,44936
+71659,74537,94611
+27101,47095,11274
+92872,24449,41518
+76713,99198,65511
+77032,18541,1643
+81804,78613,92610
+30285,78011,95649
+94118,14262,86867
+98138,20639,95733
+19717,7643,78366
+79577,98530,79284
+65885,91738,89021
+57129,62655,14528
+16341,35833,91115
+25125,79976,75983
+30026,3413,39985
+9249,14414,98996
+95986,97558,35543
+64849,48676,63732
+37866,18975,22476
+20193,23344,86471
+40697,88955,5112
+85534,10932,26468
+79778,43504,79713
+58117,2059,86884
+9669,51398,77640
+24125,78951,46432
+34711,96382,87664
+45573,75148,81845
+16889,88383,40791
+8670,37004,97701
+95183,23182,18896
+40744,17743,19467
+6735,65124,25209
+17439,58054,22868
+78674,65470,16365
+10552,46369,84731
+25386,25677,79956
+92755,20746,58602
+21460,78182,94812
+16495,99425,14836
+49765,66706,45783
+26751,61378,18085
+82543,54799,26048
+51490,92325,46246
+62642,7191,15333
+39860,71783,23981
+63276,57829,2595
+60363,27578,31242
+51810,64805,93604
+75656,85059,73027
+77505,27458,64284
+13992,39193,38320
+29262,91494,20049
+74872,82504,59103
+22021,62347,84106
+27034,14798,55844
+71916,80095,97902
+90253,79655,66123
+86884,1804,54809
+49657,58516,90518
+54415,51651,14277
+96302,71922,93730
+78763,42339,75250
+86116,78356,91352
+94940,88505,72924
+4115,23113,99754
+81154,59324,76757
+7359,28671,21384
+52207,34049,2247
+42201,87450,34089
+46669,77265,42851
+14225,41052,40185
+73051,27210,25317
+26462,58994,23092
+66186,2419,91475
+54164,95130,82507
+90198,43005,72494
+44053,25414,14046
+25317,47146,4880
+2726,28534,15914
+45479,32705,96310
+80624,66681,51598
+82532,95691,98610
+45125,56328,12156
+69088,84761,83206
+52912,26485,76488
+57450,80919,24740
+59962,63369,63839
+76614,95589,97321
+79720,5364,79099
+28830,17016,54833
+42079,76225,45761
+65848,55751,92895
+55354,82059,22466
+16121,6011,1717
+53695,97624,46440
+60458,28905,78176
+38226,83075,60867
+67013,59189,24604
+59493,58375,52952
+80121,58172,44398
+52001,51712,9131
+37002,36667,45361
+53253,76646,45277
+31721,55969,7087
+21751,45928,75548
+21043,59423,52755
+90032,9363,65033
+45749,70908,67326
+48418,40434,17828
+56845,23466,21742
+91518,86928,48563
+516,29577,40827
+12770,60869,50055
+44238,92219,53513
+34152,71908,22949
+25564,95746,30582
+7107,17245,50912
+24619,43132,93912
+74423,10628,33205
+88638,97306,22262
+17483,77927,54635
+3039,41331,99683
+26462,19784,13734
+98378,37606,52453
+30127,74069,49928
+16811,36447,47818
+20000,88266,11515
+90842,27338,60427
+58158,4856,45430
+7170,68602,69302
+16935,77827,73340
+72131,63124,61043
+84551,25429,58768
+12674,2472,98102
+10305,79552,96118
+14260,5798,25818
+86479,8440,48642
+7682,21371,64929
+27247,60963,15448
+16688,14493,92422
+47502,35518,83242
+68927,29716,5829
+87690,9995,41730
+63352,10104,30353
+16353,72465,44270
+85195,65929,63085
+61616,16033,99490
+3578,34804,17890
+33957,29670,23201
+76443,89101,12148
+21906,98120,49549
+36242,53091,57670
+9552,92432,17982
+60981,2225,77952
+7465,99581,76621
+68232,87445,5116
+78801,1981,74941
+83925,29672,98264
+16408,74616,68934
+81218,79937,64981
+54254,71566,7214
+83077,4512,34529
+14061,33437,49687
+72846,25246,40696
+74787,70028,20081
+35389,6013,22791
+11031,30568,1830
+29499,83959,92644
+55188,1544,71994
+68698,44118,41811
+87002,47961,52539
+44960,85056,73762
+20106,51164,32413
+89440,26189,62662
+73824,67270,8070
+71970,88337,91958
+4572,64567,72244
+22544,83764,36384
+82987,50338,95109
+98233,50378,81803
+3199,42755,46463
+68932,40764,93273
+57341,64650,24272
+83688,18635,15318
+25387,80995,31467
+98370,88066,30940
+32774,42021,33681
+7586,38402,10746
+48260,81041,40558
+29492,97055,87333
+24126,39410,45422
+20304,65694,6007
+72787,48756,11747
+28327,71900,50803
+60561,55715,10616
+10960,28481,1566
+62527,29945,93160
+34772,58285,90168
+22344,27332,76583
+15394,10075,77289
+45528,77071,16872
+11053,7224,74428
+5246,87789,64592
+44480,56550,85366
+66016,12184,74069
+84909,34653,41787
+15702,96954,42309
+96799,47657,82300
+97323,7775,79169
+25423,29772,11130
+83053,66975,40962
+86591,54449,7837
+45806,40469,31789
+62806,92574,63005
+41786,83977,43416
+13661,21360,47431
+47866,42585,71300
+22063,29693,50980
+62045,24529,32361
+89982,14315,32381
+60245,36342,34935
+40246,99465,4282
+89863,27216,74685
+23691,26136,72462
+75021,54176,16734
+39403,74752,7816
+46810,14709,52064
+17735,6409,69003
+23644,38369,19040
+22678,24426,71606
+52947,87845,62868
+32558,13485,90646
+23275,52745,52084
+95040,1176,46723
+96346,77506,86806
+72065,73728,83099
+29079,99946,80406
+7730,50041,93929
+19580,43906,52029
+3889,77680,31241
+89050,7965,20701
+16542,15476,42161
+19758,37994,91903
+10406,68666,54858
+15836,59881,45902
+88015,57274,81052
+28307,71670,52843
+69439,58757,35716
+40839,88857,50078
+98603,80792,52028
+12800,98473,79511
+84277,85725,85850
+58836,36195,31658
+43804,24002,39761
+12201,54499,83863
+64399,46967,46895
+1340,81054,85675
+5578,13337,16520
+13683,812,10699
+11517,79989,84598
+50070,45258,84570
+45402,28278,69212
+12076,98145,66079
+92573,20057,17745
+59914,72272,20599
+79910,88451,98532
+68719,16894,33782
+1879,43507,7603
+56593,84402,78380
+18789,69726,44183
+35165,79278,87276
+90339,88126,73347
+96660,62567,74422
+67895,51575,74667
+7509,65096,14940
+99895,41192,86263
+76084,36563,10772
+21132,16749,16737
+81072,11088,29744
+6830,61173,5775
+84252,56005,34996
+34413,47128,62518
+33272,49960,82661
+87092,84090,33537
+69263,60287,19529
+25231,53302,23255
+48670,76330,53800
+50693,91656,87146
+90455,24882,84690
+7937,17825,30994
+36832,80983,54902
+98251,41008,96903
+28628,17615,4256
+23777,37031,74461
+76434,54099,50436
+71057,78462,51112
+32814,6453,86847
+76116,88396,85825
+42399,44460,37096
+53399,59515,6379
+45037,65860,5478
+35470,90363,31193
+54292,51804,19002
+42004,49635,17288
+37528,95370,9526
+40614,30977,52181
+89919,79800,70251
+88524,84249,57766
+57593,97241,55165
+25648,27952,28127
+77640,48503,90463
+5875,69059,16903
+26863,32623,11758
+37612,14590,90482
+52209,48524,71377
+83787,24188,72273
+18048,52591,71798
+43984,77426,1534
+93534,59734,3152
+1162,36987,20938
+3704,63728,12547
+37558,68227,80066
+75418,80343,43337
+38024,31218,83813
+68683,62029,29038
+31156,75938,5338
+15341,47362,46237
+55500,75884,74518
+17968,45303,4743
+54216,35941,88204
+18568,36318,37948
+22894,9862,25010
+22121,76531,79917
+55049,22319,62374
+55303,20708,16328
+63454,11534,3113
+87570,19835,64689
+18957,73150,9331
+52017,43985,34800
+68793,82369,11850
+42960,49728,68164
+5158,33919,94691
+44459,7377,84671
+92320,74660,77288
+6514,53588,44194
+11484,26066,10944
+55630,33710,48704
+87942,84726,65386
+64463,9047,4856
+1264,98327,8116
+76270,13684,46314
+67070,60547,3351
+4407,42056,13882
+82823,50674,58707
+35283,39168,1092
+27609,67196,56575
+28639,19489,32037
+59299,23117,71991
+24076,45456,18426
+77865,93198,47123
+25322,31193,56394
+60406,64141,13676
+51038,17969,84886
+68416,18094,17518
+15163,91850,35322
+3489,71669,35129
+43137,20269,72646
+30208,46565,97434
+69406,80919,84153
+88448,79812,99370
+21903,825,18514
+39050,21342,28844
+23496,20111,4632
+19433,29846,53464
+75557,71759,25850
+18849,78168,34596
+88006,9961,79581
+29588,57151,25562
+40531,89545,22677
+9369,97166,68875
+93335,50005,76366
+7743,76886,73756
+30755,25723,75183
+51972,30183,87199
+42317,8067,25644
+35874,8,29183
+96589,95269,63402
+49043,60894,95440
+91239,82453,21243
+22135,34416,20914
+15428,16005,46505
+81962,49597,37999
+26671,83003,11533
+88700,60545,50690
+69686,38965,86611
+98316,67368,25866
+55806,1548,69835
+59609,39789,74092
+35114,6023,30539
+13229,72562,76489
+20587,25433,62012
+8152,51946,6467
+11855,26118,23046
+91321,87874,84653
+80202,87211,92625
+13381,34258,88723
+84454,88842,8109
+56082,8326,91945
+68537,24889,49665
+42503,40680,44553
+95544,56904,67914
+618,92734,1736
+19162,27443,72873
+1691,72541,27941
+85156,55245,14748
+78586,45400,56289
+93145,54546,6724
+68206,78712,81979
+55906,41769,36957
+34208,85892,66962
+37724,84194,29158
+47422,48379,7630
+19449,45095,65763
+75572,86665,61057
+26147,61294,57629
+59744,47395,17435
+5839,60470,69863
+13265,57820,78602
+71049,90495,59690
+4666,90509,34388
+42429,32602,55530
+25685,1077,47097
+91912,50891,44694
+27084,18134,92754
+48895,30007,93115
+90149,89947,65120
+38576,64309,92775
+8908,15253,25195
+39256,40646,59335
+43345,57477,99274
+716,45547,17384
+66215,90086,40879
+58560,33758,67296
+32019,57645,10418
+51566,16936,36839
+67492,25481,41403
+22526,33397,2498
+52946,80725,71570
+3159,13243,791
+25402,42173,6491
+32747,10262,28769
+95427,39368,72930
+70788,10401,29402
+6304,21267,47899
+41412,99792,19835
+17355,41918,60357
+23271,24490,50728
+56277,35645,58411
+69614,5706,92375
+51795,47131,58639
+10615,79316,87234
+47304,34854,20896
+97342,13216,8671
+41981,62963,55504
+25817,82899,41654
+94771,24236,30155
+44811,59083,10427
+92454,47875,87029
+47244,78127,59609
+9656,21816,74761
+30970,34847,80665
+49200,81081,70097
+83166,1069,19296
+2147,71594,26690
+1282,13321,83705
+45231,46528,77433
+72072,44406,83148
+4550,31422,59650
+62091,19639,41671
+75806,81007,80178
+88859,52745,82341
+91013,40253,21471
+90565,29368,92635
+72090,49748,80944
+36388,83049,30257
+30740,42171,97438
+27965,84786,74591
+88503,61778,95811
+18594,26084,36970
+65231,2822,38256
+29220,23295,60922
+89360,24315,90180
+60639,74760,33411
+73914,83353,73546
+76083,10777,67938
+39050,60915,34126
+64843,31040,94269
+15950,34382,66967
+55614,48890,80162
+58402,6074,75754
+30428,95089,54823
+68646,70222,86691
+25009,64752,22292
+91740,11672,73652
+68699,76516,53717
+38828,75233,2045
+90758,10085,11863
+35303,4054,24100
+72217,97623,55062
+96580,58969,77513
+11259,64930,78330
+51320,58687,37369
+41746,29888,35939
+69574,5211,15256
+22199,8682,43177
+43273,80081,86629
+94365,66547,95176
+68848,78201,10163
+91497,43185,43358
+99185,4023,79277
+11908,2855,94831
+76467,44703,82848
+42194,13485,4427
+40906,66688,94781
+93697,79846,84682
+74369,15948,68615
+67443,10659,48481
+9908,98954,36171
+40186,73283,52933
+99396,93299,79215
+80473,76811,60061
+3300,15525,49547
+64235,44838,62520
+68802,35511,51385
+45911,88407,45589
+68657,37270,52442
+40070,52847,64550
+85204,34686,25889
+77849,23743,60227
+11255,44764,57420
+2985,72486,69626
+31305,59544,4705
+38315,31568,52256
+42984,43008,91342
+88147,44667,18664
+38757,75939,45745
+49769,98103,87443
+56391,77109,57497
+87901,46126,40241
+28119,99747,24930
+42704,51439,73455
+79728,79670,11041
+43043,4095,48057
+88158,50827,17671
+88606,67274,52161
+16960,30058,66555
+5153,13766,4421
+93159,19450,86051
+37083,25104,71678
+99484,38873,8163
+90316,18914,12357
+50912,99969,56767
+50084,65352,82067
+40494,36949,60458
+26774,91021,56395
+66366,98043,7635
+45252,76847,21575
+47066,94257,15162
+3306,62910,70823
+85588,45961,59301
+62657,91007,12986
+85175,41106,11110
+85565,4056,2529
+20520,19897,72395
+15830,19657,71679
+26839,31190,80953
+54135,48670,55762
+20676,8534,50152
+89034,72567,24111
+21863,16032,8441
+61801,28518,58572
+56531,35829,30815
+81354,58423,44076
+6589,84325,66690
+25233,11865,99301
+68810,53829,53433
+56215,68422,67023
+83231,22105,16519
+85831,91557,18742
+55915,42603,92805
+37540,79266,33034
+12713,33625,50348
+59687,99965,55069
+60437,42606,74220
+54500,85809,16560
+65298,14679,41910
+72105,99343,68866
+47210,95130,3399
+2768,81492,15697
+63099,24694,55015
+48618,13449,91933
+66249,34896,31008
+86902,75314,22110
+39835,69674,30763
+33453,32363,62415
+70571,7199,30808
+84766,50228,61838
+91949,91544,96319
+85517,57023,19506
+22321,23185,14525
+28196,92154,60248
+23783,90987,58869
+79606,14886,21691
+11555,9510,60890
+95260,18641,25484
+13074,68976,84381
+21071,2256,34472
+25922,2612,68976
+27570,8348,83879
+73737,8974,36076
+81028,13545,66793
+21319,18705,92178
+13939,28898,18896
+44878,87684,14996
+27511,41182,53126
+33314,44968,96547
+60415,12335,29166
+29922,71235,12906
+78015,52880,12171
+46033,27750,60095
+10674,70673,8948
+81270,48091,43432
+28891,23126,18591
+63647,23486,75158
+3260,44422,79503
+24810,65643,53157
+35862,52980,4654
+53213,56709,87824
+89292,54990,37360
+38140,68558,52318
+72910,13861,41244
+95139,37411,53020
+71156,87606,95665
+96621,1232,21495
+89531,96021,7842
+67045,3406,64525
+17459,69578,49542
+34838,248,2497
+11030,97664,47772
+31287,9333,41426
+19072,63924,3001
+7431,5064,29648
+85846,14540,65502
+8412,5818,89192
+55400,59670,22005
+84247,94335,92590
+16623,58484,78018
+15682,73998,69510
+67898,76387,80142
+59426,72609,88872
+17621,64665,1407
+78448,72326,90406
+91199,85312,5309
+63593,97642,49163
+5747,26556,79460
+84303,45041,91368
+71643,85895,19213
+31125,35416,29703
+52476,2357,34558
+26853,52019,38607
+32295,22729,48475
+20998,39914,24967
+31883,61294,6666
+63756,35603,46959
+95228,21217,24839
+17929,83018,72744
+89231,19815,7258
+8027,5254,8204
+91580,3201,41573
+40137,60102,97686
+4574,60096,37453
+21989,88163,88567
+58357,96024,66434
+26850,22809,38765
+49285,94550,21969
+42161,18147,5875
+36955,99935,35913
+32415,35958,68782
+64021,58788,44844
+56581,71575,16343
+58688,14244,49159
+4798,37533,29530
+35967,47609,19604
+97307,63734,75520
+98478,70902,32774
+13191,94365,53523
+46316,58175,77031
+32444,10491,99730
+94417,77469,44026
+69523,27919,50055
+58194,47879,36240
+1595,52340,51060
+94144,75474,707
+88185,61915,84265
+73833,24908,93632
+73304,73122,6418
+67062,37183,54822
+39401,80982,54388
+63370,83577,54850
+95436,81584,63542
+94854,35000,73307
+43835,75469,22263
+43736,60285,68811
+95416,63786,22260
+29316,44954,1327
+80063,78813,61103
+17169,33424,9126
+38392,24384,67992
+24150,45121,72010
+81855,31359,8318
+8834,70874,90199
+71301,58891,5761
+60387,77720,11158
+63444,21237,44307
+39389,44919,66527
+88833,19255,78117
+52509,9618,81890
+6724,93417,16368
+76603,61404,73700
+67182,92942,73813
+94265,85598,53385
+16874,62509,50504
+98770,48218,88565
+18055,24802,37009
+9073,27440,14884
+10472,2985,50301
+99927,2433,59410
+76194,83063,37070
+26354,43415,71679
+72801,46694,18571
+12293,44508,48252
+49884,78944,28605
+36575,1667,2600
+61201,69688,61913
+79046,31798,14953
+75283,63705,65760
+79904,21814,63190
+80718,16181,51853
+1421,32964,52060
+22576,60124,57902
+62463,15863,33854
+97195,22335,64649
+64002,8150,61083
+70565,16825,77213
+38616,85092,71181
+3259,5825,29656
+22692,18087,2706
+45233,95857,34879
+73361,3504,93705
+76075,15196,46112
+48311,66179,24825
+34847,51027,84948
+47292,8030,69406
+50439,47126,45215
+93596,85044,67201
+27358,58813,75452
+45085,37054,72302
+89734,24334,43012
+72478,22685,32664
+13127,12132,16556
+23398,74293,66782
+61561,71268,98395
+96270,6076,42180
+50808,10296,55267
+52925,75959,22868
+36728,87595,67262
+28814,20465,20025
+12451,74968,57823
+50476,74094,89126
+92049,7915,99919
+21058,86375,94191
+74248,24932,27221
+15822,62263,91376
+23190,78287,74294
+68195,26341,88255
+4845,82979,74445
+73567,99985,38328
+92793,73612,93227
+73150,70240,8129
+16401,70653,38472
+78512,46261,79432
+55273,25112,41768
+49819,52757,89101
+73147,42021,62925
+83243,86788,44561
+66035,43011,61081
+64289,30634,66383
+83767,70012,23930
+97913,46083,21133
+9049,5314,52871
+1092,22006,2463
+17713,58985,85053
+16899,76126,67622
+78048,90858,62819
+54151,57810,58786
+67174,92098,3884
+10011,87582,48423
+32956,29592,34277
+13507,83336,2828
+93095,58759,33797
+66838,21657,38777
+10676,26335,43942
+1291,15134,7925
+79979,77208,94762
+79118,61466,78970
+42589,88160,49030
+93876,56922,95185
+3002,50452,52767
+57532,69130,63834
+89846,38728,90432
+63548,17076,71966
+87517,70862,71815
+29644,77037,85317
+78262,49214,15015
+30666,50362,70396
+57299,19791,67500
+66338,13576,66395
+83998,55932,44475
+26175,38546,10889
+27860,27905,25079
+52934,22736,42941
+70279,21508,42569
+4203,78454,67282
+27116,88523,65610
+42698,68974,11616
+20366,57344,11552
+96597,29151,97534
+25441,85554,61805
+68775,84558,90829
+76047,64205,78866
+77342,5849,37724
+1922,29109,10038
+27523,56567,59191
+79457,33618,6302
+50497,10050,64942
+21488,70230,16804
+90169,94742,39467
+81555,18099,27530
+94381,33409,3824
+76817,81492,61417
+95538,36312,46905
+58182,62504,58512
+21623,13118,50040
+81905,60630,83932
+4414,49936,53420
+13002,74826,15841
+5130,55995,96493
+48551,59489,7598
+66951,51133,42542
+43324,65299,93868
+96772,17067,13303
+51115,22260,26733
+9176,24405,69907
+70491,64869,76549
+43369,94927,69970
+93191,64165,84993
+78357,12787,68510
+60545,44946,14245
+15821,42536,20696
+47660,55748,95639
+75137,19123,82285
+75810,51631,60363
+86047,38867,55048
+100,36946,47750
+22345,11738,3154
+45091,70474,4419
+54342,97968,53923
+97177,49919,32211
+86092,22756,70196
+33826,88495,34815
+80563,29717,72590
+84222,97772,63848
+48813,84268,30129
+57115,6851,90838
+19147,47880,74908
+72374,89184,26981
+61424,74801,86555
+72908,29845,46866
+17968,60598,87285
+16716,7239,54595
+63462,79864,2191
+15859,32562,83174
+26478,36049,11898
+77765,36690,38167
+39185,35029,27497
+99233,3518,35764
+15022,99868,72379
+78938,91683,54584
+2422,28525,63196
+44050,49576,53328
+61593,52079,54189
+83760,46277,2450
+89148,43262,10337
+17556,38859,31710
+61482,57351,59982
+78945,38620,94712
+42106,22783,6880
+95509,89168,35995
+77018,22089,86104
+54855,27046,83330
+24509,28772,76079
+4250,30108,35461
+80237,54491,65750
+1676,14034,3771
+97033,63273,87740
+79063,61653,85252
+27730,2579,43457
+75469,54205,40734
+56470,64558,98729
+38143,74552,90839
+92204,38520,2310
+42753,30415,74635
+62050,32618,64017
+43143,54979,89726
+29197,33521,37598
+47005,81646,89523
+43352,18117,43373
+44744,45236,2571
+75037,6652,5842
+5771,84424,35402
+88734,24291,32664
+63048,13128,62557
+36853,5680,11727
+83796,2580,73413
+90112,94485,28345
+1939,2285,51662
+71063,43005,20022
+20631,26590,21361
+28775,96713,79699
+11319,76966,8560
+96298,9538,12332
+7656,37920,91474
+80101,67962,68296
+37374,27253,17034
+61445,21364,93809
+1079,39201,76908
+5785,98392,7937
+20043,83370,29160
+85845,62515,70670
+74143,62464,19160
+99915,9289,46143
+55301,77668,74574
+65724,33701,87127
+91453,48691,2345
+23044,63807,96420
+46439,59903,84818
+77174,244,53338
+20445,38347,80785
+75801,19537,26032
+87185,33859,39604
+10257,7883,56966
+18287,71328,21000
+8129,73999,79097
+54107,45217,94045
+42488,9698,18312
+22667,75682,96602
+561,55661,82745
+5609,91767,26013
+39709,30915,90168
+44491,32022,39839
+25221,24311,87573
+38792,57973,52031
diff --git a/src/day-8/part-1.zig b/src/day-8/part-1.zig
new file mode 100644
index 0000000..9eae44e
--- /dev/null
+++ b/src/day-8/part-1.zig
@@ -0,0 +1,104 @@
+const std = @import("std");
+
+const point = struct { x: i64, y: i64, z: i64 };
+const dist = struct { dist: f64, a: usize, b: usize };
+
+pub fn distance(a: point, b: point) f64 {
+ const x = std.math.pow(i64, a.x - b.x, 2);
+ const y = std.math.pow(i64, a.y - b.y, 2);
+ const z = std.math.pow(i64, a.z - b.z, 2);
+
+ return @abs(@sqrt(@as(f64, @floatFromInt(x + y + z))));
+}
+
+pub fn asc_dist(_: void, a: dist, b:dist) bool {
+ return a.dist < b.dist;
+}
+
+pub fn main() !void {
+ var gpa = std.heap.GeneralPurposeAllocator(.{}){};
+ defer _ = gpa.deinit();
+ const alloc = gpa.allocator();
+
+ const path = "input.txt";
+ const fp = try std.fs.cwd().openFile(path, .{.mode = std.fs.File.OpenMode.read_only});
+ defer fp.close();
+ var reader = fp.reader();
+
+ var buffer: [256]u8 = undefined;
+
+ var points = std.ArrayList(point).init(alloc);
+ defer points.deinit();
+
+ while(try reader.readUntilDelimiterOrEof(&buffer, '\n')) |line| {
+ const v1 = std.mem.indexOf(u8, line, ",").?;
+ const v2 = std.mem.indexOf(u8, line[v1+1..], ",").? + v1+1;
+
+ const p = point{
+ .x = try std.fmt.parseInt(i64, line[0..v1], 10),
+ .y = try std.fmt.parseInt(i64, line[v1+1..v2], 10),
+ .z = try std.fmt.parseInt(i64, line[v2+1..], 10),
+ };
+
+ try points.append(p);
+ }
+
+ var dists = std.ArrayList(dist).init(alloc);
+ defer dists.deinit();
+ var highest: f64 = 0;
+ const dists_max = 1000;
+
+ for(0..points.items.len) |a| {
+ for(a..points.items.len) |b| {
+ if(a == b) continue;
+ const d = distance(points.items[a], points.items[b]);
+ if(dists.items.len < dists_max) {
+ try dists.append(dist{.dist = d, .a = a, .b = b});
+ if(d > highest) highest = d;
+ continue;
+ }
+
+ try dists.append(dist{.dist = d, .a = a, .b = b});
+ std.mem.sort(dist, dists.items, {}, asc_dist);
+ _ = dists.pop();
+ }
+ }
+
+ var used = std.AutoHashMap(point, bool).init(alloc);
+ defer used.deinit();
+
+ var circuits = std.ArrayList(u64).init(alloc);
+ defer circuits.deinit();
+
+ for(0..dists.items.len) |i| {
+ if(used.contains(points.items[dists.items[i].a]) or used.contains(points.items[dists.items[i].b])) continue;
+ var contains = std.AutoHashMap(point, bool).init(alloc);
+ defer contains.deinit();
+
+ try contains.put(points.items[dists.items[i].a], true);
+ try contains.put(points.items[dists.items[i].b], true);
+
+ var last_count: usize = 0;
+ while(last_count != contains.count()){
+ last_count = contains.count();
+ for(0..dists.items.len) |z| {
+ if(i == z) continue;
+
+ if(contains.contains(points.items[dists.items[z].a]) or contains.contains(points.items[dists.items[z].b])){
+ try contains.put(points.items[dists.items[z].a], true);
+ try contains.put(points.items[dists.items[z].b], true);
+ }
+ }
+ }
+
+ var it = contains.keyIterator();
+ while(it.next()) |o| try used.put(o.*, true);
+ try circuits.append(contains.count());
+ }
+
+ std.mem.sort(u64, circuits.items, {}, std.sort.desc(u64));
+ var m: u64 = 1;
+ for(0..3) |i| m *= circuits.items[i];
+
+ std.debug.print("{}\n", .{m});
+}