summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorame <[email protected]>2025-12-03 02:45:02 -0600
committerame <[email protected]>2025-12-03 02:45:02 -0600
commit430bc7a3f5b1065099716ef54a8130430fccc60a (patch)
treee1a9f0fc3366ba8b1b2b76c990b50d57345c5f5f
parentf99714019cb330a563189e9d0d27b9faffbee706 (diff)
day 3
-rw-r--r--src/day-3/input.txt200
-rw-r--r--src/day-3/part-1.zig39
-rw-r--r--src/day-3/part-2.zig45
3 files changed, 284 insertions, 0 deletions
diff --git a/src/day-3/input.txt b/src/day-3/input.txt
new file mode 100644
index 0000000..7957ac8
--- /dev/null
+++ b/src/day-3/input.txt
@@ -0,0 +1,200 @@
+2331221221361221232332583266422231222315311212133222227552392222213223325332632323212227323432113121
+2233226222432274235222128222151122221191321631122222252323328313312322222318322121122332221222212221
+4358543424523543451634322426445223334323142333443444443434544565434254474343544233443224454543446963
+3554445343324244444345432454444315444645448544644543645644245345344433554445335174456444344444345225
+2222232222331222132332324143527233312312226312212112123221242423222312111222232523224213222222232222
+3321232262228234172244637228168282252321362462384572222316322318223875263246587288222513632342823671
+4433523333253372235442333232333321456422743325426132223322324151332255323373223333232113132623632121
+1218342223423232243542412332312323222332222213524822222333232133112424236223232443322222322323213232
+9132221214313323354322834333713462232226223322288233352339329242826792325313233258773269233332532932
+3312262224312242133244122222332531212223333453122235222352252222623143332321363232332222324232224244
+3321273454522151454631311512222234343233222324232394433424723453431553134355529434645222332222331223
+2343281621537224322242532214243226224442457232722221421461326232248423222923112212941232266945222455
+4335724467286342322332323673533723295546267763342738642522434554852527689752376729361722638234362933
+6584525424553451552658754553444855536554635225545522555225534734755555457122553315592574132552314364
+3333315224232362233325223352343233262333132441742623212634732215332331433233343624655215553824233364
+2233413252422222133344232422452232422323122461532321313224231222322342222212223423532521123244132211
+5642343316523633633346333837213813322217224743345332133623326333233335236223725222225833333333113331
+2455743537452743242433666334346423462244422822545214644722323263953442245242442233315825323426465666
+3233354333333433436332463223333233633233333543252233335231334334392233235232232331353225233346333323
+6751539152436432254522413537742423557226364245435324142222532223651544444425667643543252543432572435
+4573652522457346429561444556442256637291255424422445158299546446433532554335295474626359644596515954
+3227475677965727785274334643246363334433554453365724266444437172464746621635467472543726617452766463
+2322222222722232212222222332323322221322222122122211322532224121223122122227222332322222222222312223
+5222375351371176713213317161144654554471573771321536455516232143461543145334411275722457731641145189
+1122622321242412242122242332233212127282322432242223335211234122235332134248222143134222451332232343
+3445723334432945335545433454344434364424342343442474533444243433442594344343332444434435423343433344
+3423323223433232311223333231622323413112232224232143232326322351364233123342333333323413321322333144
+2435854122232622421132132122621553223121242226232242432233624242522222422221366635512322323232162676
+5225573436314523832333433637612278342323376132446642423543354642249643334724542431314434524226485362
+5443324442272132252721238214752353324514333412722244421235376311626652133262424272424431146233844532
+4223633244374644442234445444524333142243634261245524225334443444423463444545442257346543633644431233
+3566729686267694335796349288376489645759666367954456664487846523239588754636376763838756535641355326
+2354555332547363542554364453452528554655614454657873656554345565245542324253345555536635372343233242
+1142224223322324223232421254323252222412422223124413222313223225122222232222223133222422242234223223
+2222212221222412252225222124262222212332215222242112222322262142262266223211222232222222243122223252
+2463256542236464425354224744223552232555435543447421433245255256342635633515352544433354333245133667
+3233212312322212122243222222361222222122222222322232122121122122222211322111311311222225112222223232
+2245626512471415142227426243425432224224445443244354152224331442121413484433235144427642453322427832
+3522445255242258353522434633522433422431335244455553233552244654332644353332534235353443453435451425
+2352234422323224232212131221121313234222212242222212331312533132331343232213231332342224321122322322
+9629632568436649457246765389536345576654346665345266526243559635365524795652329436259554553264365783
+1687783252471642886241864885417574245161768635576844528554852355566876467348472654541656343253424539
+6745354737458343858333654555438844362533452565458444434744585752474344494354954467486454471273967844
+2233223222233223121223223224222382522224333124224332123235222333323413222873232235223311222332213233
+2235344233133433533332533223453335336453566623314423533253443334446343253535613333342463253342316374
+3212123244222213626253532637134325212517323126613122243355233323253445223232552433622334315223522294
+3312222222514331222222112222233222222422233232298342222221222222224422222124223312822322192524222312
+6532247252222213229721212536452226616222722522723623447624431222222453212221222122453322222313271252
+2225122212111522222222211213724213223212232223222426322232352122552228312222222226212223221323222232
+8768755863666775785351676577467272386862756128927854866887867877824888774875675488678436686758646846
+5332454224433344246443464456444642354441544546364244154344334452345445844255457546464745336426356346
+3355555354549245455552557665544535346554542445444364355535453543655345445544347435555534534635565554
+2343324243322233333333241322344232533333343445334223433374233322333644311333347334333341332352333423
+8225513313425226222222575141283631531543543215217262745456229316346432132337222422122436732321464127
+4374368225292232442172522277482222528719226512341248227285212971295862222131442222319112421822212317
+2422522412332235226225222222341232434223221231222422232246333412692143334245232133226226244336342333
+2332244221213323231241222123433322223323422322223211323323322223322332223212112342142234325221411423
+1215222222312324122212222222212322232224222222223223172342622122112325117632512222324122223621222221
+3322324322142435122341336521343273214233221423312523142232343432321223214545322222323345323225214322
+4326563535312332356221431534653435252344533264313332322443332562323442726224336414212112323233553933
+2222234324221222232221233222313623233363344235224322322422222222321322234311233332323323342133332314
+2333436221222112724115312422613872322363224835334542433363222722441524222236422996614565293622359636
+3527345773363365323476324448644576474553225564461443464643334463635151734475364533153353346547364662
+2221222222222222122314222222232321222212231222322212132222221232121212222122221221122281215233222124
+4355653728656723554764655426625543424334455344533346655657527566774553325464636476464621652655765627
+7446859867636957648439879576679378546427987766988934385767665577547357658873429697878877553777586338
+2222222222222212222223213222222232213135211223213233131331122322222323312232211422122332122232233435
+2223222324122113222223252322232356323223324242323123313242533343232335224441223322258222214234412224
+4465423737416283372132333333252224354245223313123226332432391378844221312233432246332433263541233471
+4143345132274345425337145135251342216234323234243345442424443133434142242344333334444463344213347334
+2223233323211223223422233113322253122112222336233423321221422122233432334333213153241231121231222333
+1422222322222222322223222211222231221212222212222222223212222332312223222222222223322233122121223322
+2412352223344332533223111324223132223232933413137324222222221325145332232333233352322122333321512233
+2342533122422572523162121325553142264722724124412221612142222222232762212322223212522122142122522232
+5535454433656285553434456225255834456424332584346446335333375325535452235344535343335222434424483442
+2322222213221242222121432212222233822223252522341322252212323342345741222342122521225431421234112232
+1236232722125147752326232256421443323268572754224371437133442763112325363147254423395828533234544577
+1263262224242222231122322223272221522222421314127126562421333533292234322313333113142323222222234422
+3231222233722412332122322132624222432221221242422422227252153152232112222524233742462222432329622222
+2223414233232593232736373425362433224234433327321335585223727735366239132333331243732332232523233333
+2332232111432532141522214452534432325253421122135151242112214312151115342324525351232315455455436789
+2222221312241323234112222221342222322331221322214711222323222222222422233842121222322212312232222223
+3333323382337834424326122223332434317334533432472213284238733992443333222274223413332226834662237822
+4434643664734445443445444436262366544265664644844644944544245344454444444424474644448443465356545427
+2332153333323333254322332321162213323212322223121532122136223252233332222231528131242224135234433535
+3586133683863227354263387622954648342586424638856824572188353643163284223156652472531728522387234723
+4243442125434524252325238322344635226142663354441627532255254424334124454232854444562443232343344532
+3222222232323221412222222222223342222262461212211122222243253222212222221424822312222425532322121452
+3514363653344644143351255531145616525434344623444143524145222255344324212252552415414264246446521789
+6638535275535554635764535563535235455557667757457584666563755574864645565637493545544768764545463759
+3249442349346331984452884869782844444231354584187653744893847844874949274546478617446785533626869823
+2232312122121223222312222112262522221121212132222133222222333122221222233221535212222222212222222222
+7478563372666987515356423463688634631524422577685753657697596264655633463748333737685433416292858727
+3333337453534543443434332644333234343331463333335643444446344344363354533333443456443133633344344343
+2333435333333443123333233443113353442342333352322233442434333433432234332413333443453333433223233333
+4559223346922317122252528232258742311222312476642134443312313554323343132843422726324523329532322579
+6557747559324734557157737526274467624383615244735752575454726634566346663343337252385125332362347177
+1422484335332542444452212226235324345455242151532322425432844522245113243424545255313444947432322253
+5343211212343523233224434234318224342533332632635333362223333322322232821335123223441523763322223323
+4944555244442443141412334343443364243531226431453322453344344816424724642224454424343323543335253453
+3342223313223212232423323312321223233232212222231323223122221373233133232221141222223323222332412231
+4634154373456332342424765152322347535543335532333343344232441232332343334373253144543331421242234332
+2374526311227242212724122511315224152232112222222445323233633452626292215822633223542416252224422114
+7343424333685243937742354144463533673254373535333572342932323944633432244332814233463357243846333453
+2542523323113953341244221333351634322213522433153433363132373263321233333333323212522323335131323212
+3143124722422225234249434252732222925563412572223423233232434374116524224652272223424313224334327322
+5464526743367762547152345663258835746645563361844716335653647352656543445443566335636966445555667836
+5434422122412222232521444363121642244333222234263482623521223232222221122222114221423542142224222142
+2323343334333323423732223226336443544232533333332333531234333534933212332356325432334123233333333533
+2322222322332322743224246222322222422143232122122122212222321221252222712236122233122122323252122322
+3312333231322113221323122222232173233322223322423221322132332331245332214133253423136223332233233222
+3223434513232223331334222623332531123422233123433342353331332335333223153132222331323212336333233332
+1223221262332422322322211261222121221821222232222212222232213222122212321232123332212223257322222112
+3123444343424434523533242333252253335635334453564354633333354345543366414563433325466335454346265334
+4133643665445766624746553676346875655546747175455577344346664565756595324454437553365398567654453643
+2222222232344313224232222322322222212212122137227624224232262242223222212212311122252422212222322222
+5822222332762223422142212123171112621265212536322212525263524222275122123218212238212242561127332222
+2421222222122122252227222222222412236122122221712521222222223222221222221221222224222311212251222262
+3238422556422546353324122234323222343335552232332332344345222333344335222225133336332233323343235233
+3223132424422246242552325424653461443664323324454345643247744316316334414644624364151263862446422434
+7282332322223122532212331222222422222212234272223232224123125222233241212625323242342222123522212322
+4143745544664534855444462543435556585453443475534764466446454467493585533545436431854758864444427473
+7822214222272222321343582297122232822227124221532328221282664664212422225225261231264255231422914217
+5445485645342653643343474331438445553472437144433413134444263533534314162442685423744535244494242156
+6325543334448432533333535342364443343134432331534625331434434334353533332233553344634533334433654333
+3664645584755555487636477464654648545352456774186636553587536561854634842334554445436557663224575436
+4642448446313134441547376744443822235647143444857444757345621622244423644244642354347877623155252313
+4333344221543232544743733533633633323873431244325214726344326529232254424332251333432332424437424634
+4122115343321222212413232211332332653422231221321224292231432243222662223222323232232312211212324321
+3354664443534545924555245433655633345243253533533553554473535634723325333653786453563152523554436543
+2324233332321222122222222253224232323314323422234233221312212221244132152221323134412222332222221213
+4234422224222622222233553323433322652234123633637244328234323239321262681223324422346462224463222364
+7448436442667222733352525565544367742934636743237477553766865352554623744436342337767449218334443364
+1131622423421542232324322326721214642522245663264813364514322212764521361624272423452732333332625592
+2423223323432332523343133332423322224322413232331313323343223123223251233242224322322133323123232233
+2321241441222242332442223232132424223224132344322232332222222214124223243524442222231212213243232243
+2738222532215225253221824217262263321731222244752662646233522217225722164122324222657624422225124222
+3312322123221221212243121222222232152222522423222122222252222225122222221122362142232152222222323221
+2122132212213233212332333126231333233312112423222222223332232314442232212233333233413134331234222242
+6924241231212213552237231223422312417532256222135642493332372642325672481222355332322332324363411622
+1223222221123212212212244222222122123222243222322122221423124214112321422243322222213332222112212223
+4454434353333444332343345242333264353524544635233439313343243337384235244632434333323232363933533333
+3712343334733432443145333833223226363474534334233753233333652234344334333245642343324323341333334223
+4342444218441353433444444544434443334263543323422324228422631157474444321349244422214728323444343424
+5224834575883364554276544444562747215786728477875383237714142583779759881352723844422443743865312222
+4263222512343374234434143363124842344652424635264542446444516334244343324264646133483344232234234215
+4474243354534347344353544434413253524334573444451544456434463254764353534434444347347443442343733435
+5724261464423554253322365533647234422564425471162238443126525325231214226443122742423452431526518254
+5527584763568755255492653633249523632455271462474724336685154496558638484344555552422652942427459322
+1243932125231214277221532214212322432122223223243232242323126222242522134722232252324224121424327332
+5353232563416461435339796425284333643255325655735623537543413467334132333523423545451665352576262412
+4636374523235534363442835453525424485583452485432328238576553563532362854326883536434435469379555333
+2422344145556433262211122252552552352139543342425435421242242542221212226551525241122222425225125542
+5269438821434378336562375321347279625262622373676237454227414232623369232926246255212562428452655646
+2362622136554252674263632514321527446536922516645445622532264322475456736663237546256765222664395435
+6246932339288236918222554365372653752218743925229463266792746564569483732937778146425743744837455746
+2233242245532453333243532252423221225434232224322433142342223242322432232242323132235222322532364432
+4444474944333544444444443464324446424243444444374444454483434444443344424245434948474439142439484444
+3543234265234544223325232433435422242263644124164215584234545182545483254335822222332331655545532633
+3232221133224333231122332572225122222331321434223533232322232324334523283223313413323326226172313252
+1242182222271222226227222422121222224542222225241622322122272221221222131231221225221222222222422214
+7353154575145645221445355735645756555646445525655434845559475462578543453645473443456897454498543462
+5842454344422143845553675434524454847395533424548439536955434563345353733356442342574344538258355342
+5335242324766744241464343343244473323243535345444337356436554451443725425545454567555554364444232485
+2285944767898649468857964388632426644687689996653795629745579666286565453234656553357885655743894676
+2232233312322212322222222322212213212122222212233223222252321623322212221221232111232224332322231121
+2242322533225123122222151243521163332432211723222231522522442432312224423215122423222523114233221212
+7937874658445687793592685766545866556865836579954597984479457655865798556795863648998967758819677888
+4525414322268242225222553723524527754163511427627536743112214418672285452255234255241445552455242426
+3223511343333892742588442834443643533373343533354344573266235434433737533432314377293823363343343345
+3335354732353312341322232533232336423433243217353335334225245445233342333313234724242343343563523334
+6392955435368425654244548636922424343756645423563452313355614243454543342626516745336374544454423463
+2334234242234917516562351543265433442326324544153554646563426622324326523352863652661516234435625458
+2584773539322435222434622722244234253372316526536443476268547334245442563253121565443663643454547433
+1212422242632225121152334222222222222422222422221522222322232214222372324233231221424323153232233251
+2533222222221311222222152222132223281222425222122334221212222272323231232232232122223212223212323225
+2323132222231122222221223252123221252722222122321725252221121223221121292222722221222722122222722222
+2622222111422122312323222424251226221326321243261362725212322234245322242221225223222252222222121112
+6365573534733534456545555553456765456435565453464884542353434662474114234231545473564147545655233536
+2122228134462322252221322233282772622332212252121322272232421922123222221122213213221333232132183223
+4237515443383444432745732563634433543321346434943334464644332433472349693436883623334263222245953643
+3334333523313435353313343343223532323225556235162636327443343335225523523624343323321333333354553352
+2212222224232222237222223452223224212222352322322221142331242221135222361222125222222721222224252122
+2213563223236622112225333253263333151233322532232222622412324222232223342433322123324313223213142532
+3244633453266234664532434424555536363534363334326546552466663454336556776626555754445361454445744543
+3224224223222222512416229222322222427258423222424222232212412622921132212291633223273212271272243176
+2477949796677497875959275496734625686965256653262256567588448547884958359848745615566456757284666247
+2334535244254324453543455455753366553243333641534534553555354555353545325445652553337456243454443555
+2222322312343123222323223322272113223232212322232222222222132223222322222232222212222212212223222222
+8443342362133224542724224833244744448492412244422623224253383452223641542836327294422424224246442342
+1244134421224421333314221314223224313322341322111211124313214141134141433341224132143244243331256789
+3221223222222222223222222221223221322521122212322222212222222221332223222322123214283322222927223213
+3323244323342213224343333323233123333433233243532223323232323233333432232333331323333232223431137323
+5434222234562452673462542432364151563663745462547334242255813433524747234734152343543832344553483273
+3152234552133322413242336213332142333313343333363443476366375434353458333382636333333243444333266244
+2232226329122214162322422141242421151232512233222452232222142623312314311254225421222221233253242422
+3232282233213132338112312212132212223222223232221126212373153132248211222232234222222213221311513232
+3632334333333335332323333333321333223332444313343342333334334333333333323433331333323323422333332333
+2322212211121222222223222233222323313322222231123322133322343221642232212242223323123222333313912123
+4446571344686493644336443553347453545635636693423652346523335324356326455636564537667634366434352324
diff --git a/src/day-3/part-1.zig b/src/day-3/part-1.zig
new file mode 100644
index 0000000..2e0c1f6
--- /dev/null
+++ b/src/day-3/part-1.zig
@@ -0,0 +1,39 @@
+const std = @import("std");
+
+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 total: u64 = 0;
+
+ while(try reader.readUntilDelimiterOrEof(&buffer, '\n')) |line| {
+ var ind1: usize = line.len - 2;
+
+ var i: usize = 2;
+ while(i <= line.len) : (i += 1) {
+ if(line[line.len - i] - '0' >= line[ind1] - '0'){
+ ind1 = line.len - i;
+ }
+ }
+
+ i = ind1 + 1;
+ var ind2: usize = ind1 + 1;
+ while(i < line.len) : (i += 1) {
+ if(line[i] - '0' > line[ind2] - '0'){
+ ind2 = i;
+ }
+ }
+
+ total += ((line[ind1] - '0') * 10) + line[ind2] - '0';
+ }
+
+ std.debug.print("{d}\n", .{total});
+}
diff --git a/src/day-3/part-2.zig b/src/day-3/part-2.zig
new file mode 100644
index 0000000..df78ed1
--- /dev/null
+++ b/src/day-3/part-2.zig
@@ -0,0 +1,45 @@
+const std = @import("std");
+
+//returns index
+pub fn largest(line: []const u8, start: usize, end: usize) usize {
+ var idx: usize = start;
+
+ for(start..end) |i| {
+ if(line[i] > line[idx]){
+ idx = i;
+ }
+ }
+
+ return idx;
+}
+
+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 total: u64 = 0;
+
+ const need = 12;
+ while(try reader.readUntilDelimiterOrEof(&buffer, '\n')) |line| {
+ var lastidx: usize = 0;
+ var n: u64 = 0;
+
+ for(1 .. need + 1) |i| {
+ lastidx = largest(line, lastidx, line.len - (need - i));
+ n += std.math.pow(u64, 10, need - i) * (line[lastidx] - '0');
+ lastidx += 1;
+ }
+
+ total += n;
+ }
+
+ std.debug.print("{d}\n", .{total});
+}