Advent of Code 2025 - Zig

Day 5

Changed files
+1277
inputs
src
+1188
inputs/day5.txt
···
+
74889598306375-79559523144736
+
23847884851515-26063777298581
+
459936449883679-460281935061196
+
545695811978609-550366304549745
+
269527990632522-269945028746335
+
52542145987470-52542145987470
+
273110633492620-277105721993791
+
99226245783045-99371738264141
+
374951583052617-374951583052617
+
262023579067176-262675254937082
+
305591362690390-308549833234186
+
82652823861018-82652823861018
+
251950657574956-259887392284062
+
426017258068316-427958298472665
+
523534648927338-529180981385641
+
264959008015820-265735367299044
+
222376773933674-227770708606301
+
400512092626953-401890632610026
+
352311770735207-359414238172700
+
333688717400456-340405613250299
+
437019240719486-439402833548026
+
527092562011228-532043253244526
+
342398377522670-351448558631916
+
459284442765997-459767549156618
+
555666591387764-559196995081551
+
445635129234863-449206434197795
+
104742632902288-108456151380882
+
486936683064659-489793719367934
+
483401294663066-486936683064657
+
111131504257196-119314223294276
+
192217707764058-194249462841255
+
152542412311937-152542412311937
+
410195735957768-410961237535462
+
510864614478233-510864614478233
+
1725086974408-4674947171141
+
407943251943297-408791248752573
+
514768728274514-518320134249968
+
352311770735207-356182489432407
+
284156674778218-286083629847963
+
395362879313767-396732118247651
+
199280146173698-200618657181350
+
46260352873068-47885164713225
+
194514670399242-196188590161744
+
31845543953525-39662866201277
+
420816803348804-420816803348804
+
243459050537558-243459050537558
+
82652823861018-89744399134578
+
52542145987471-56718886376170
+
143074066748262-150192256362507
+
455946037419527-456538631967209
+
48362683356905-49772221084664
+
193309947601086-195025888420591
+
464377344898138-467090913854896
+
404992714738795-405533934296894
+
391336934620721-391336934620721
+
42870359530997-44424663926534
+
69239353265214-69239353265214
+
323286609420012-327570020897503
+
457368110531325-457749348540685
+
366177675277860-370540231905174
+
262675254937082-263504034398902
+
61596205240302-69239353265214
+
295720296715724-300542046913690
+
457368110531325-457571749135632
+
98704650973413-99371738264141
+
405533934296894-405762624506803
+
167134472908052-167985611468492
+
346606822382773-351448558631916
+
382529058990430-391336934620721
+
399437817124168-400959205952113
+
456538631967209-456928005074042
+
478828408554373-480355349773345
+
263242024963092-263937259638725
+
492809360807210-494748592737162
+
553971031209233-562668469713404
+
96611015315272-97445956091146
+
496710379259649-498551037908974
+
545695811978609-545695811978609
+
313811091610224-320919547902610
+
173868070074554-176589728790805
+
494045046230461-496039303951751
+
500203266743658-502208036779916
+
124139424755624-129841188406766
+
452932791437922-453307337989294
+
119314223294277-119314223294277
+
262023579067176-262189648814675
+
407943251943297-408507566260104
+
40499454165843-42353951060015
+
409063418440061-409812352602173
+
99952814763659-100056213702826
+
97867489804299-98190930500181
+
267798658217408-268465485882652
+
98903776347733-99226245783045
+
392265619122335-393938447521681
+
31845543953525-35368129711400
+
498956072992090-500877971484824
+
261456991003298-261799419139686
+
150192256362507-150192256362507
+
541992002580805-541992002580805
+
98903776347733-99371738264141
+
408507566260104-409245214597176
+
265315310082828-265488184749660
+
262023579067176-262567907546600
+
393302087448366-394887747369031
+
460281935061196-460769747344763
+
374951583052617-379631331873305
+
13449776908338-17647218540771
+
95951220808570-96384239222742
+
198192283542096-199682437936682
+
269126435468584-269280617538565
+
131683853648211-140073228721597
+
435205877780561-437019240719485
+
173868070074554-178593201312903
+
266233250142694-266988040203737
+
402974843625693-403261146828303
+
44749609982898-46467592204076
+
136309772739012-140073228721597
+
152542412311938-158129794518855
+
464377344898138-471098541087893
+
454493733599256-454945412013225
+
406975766736538-407453438188871
+
217373831665498-218764099619920
+
410075582063499-410576372509974
+
305591362690390-308549833234186
+
460769747344763-460979652114697
+
456928005074042-457368110531325
+
495490712582377-497184240370882
+
203353257515922-206995711218753
+
452662947889223-453307337989294
+
409245214597176-410075582063499
+
21281719145212-29461042500436
+
473824309898264-480355349773345
+
459630581183475-459936449883679
+
410961237535462-411281888012925
+
235064187073078-239746783395880
+
46970106550375-48679186185299
+
504627639656299-510864614478233
+
206995711218754-210401847604210
+
453512846391372-453952362230473
+
254876062984423-257097125130819
+
396379947271805-397846727638156
+
122506952022586-126258255019363
+
286083629847964-290200989953183
+
514768728274513-514768728274513
+
397364121060177-398907008750174
+
191186839436490-192786667703686
+
213618967821287-217373831665496
+
404839885331583-405533934296894
+
410576372509974-410692115085683
+
93620627683853-93871840848933
+
97445956091146-98190930500181
+
195774648677933-197516289194107
+
197055281231222-198362088431227
+
182720818560544-187301677330220
+
4674947171142-8700720898079
+
533834274871010-541992002580804
+
313811091610223-313811091610223
+
410961237535462-411827536271406
+
456720730464466-457368110531325
+
239746783395881-239746783395881
+
497774899702742-500012881001943
+
275245086049008-281166045317238
+
264959008015820-265735367299044
+
73050487240215-74889598306373
+
243459050537558-248654988639021
+
426017258068316-427958298472665
+
394481105634933-395874104406883
+
93150966904813-93620627683853
+
455313396927797-455850586073077
+
162707238999678-167985611468492
+
13449776908338-17647218540771
+
182720818560544-187301677330220
+
398429972215735-399914592704971
+
407680028035540-408507566260104
+
335524852113386-337312412933214
+
264959008015820-265488184749660
+
95951220808570-96384239222742
+
261799419139686-262567907546600
+
92132565696665-92283993119003
+
327570020897505-331097913750044
+
415055259717418-420816803348803
+
41463756158179-43315740257493
+
456720730464466-457571749135632
+
455850586073077-456181678272920
+
43619628533047-45384139349382
+
362380049910825-367267049622454
+
458502597573756-459117229622451
+
+
267703200553763
+
314245513301228
+
476669940887631
+
68686981025899
+
288791850269680
+
281914876554026
+
486761581187065
+
333997925976156
+
537586117345062
+
112907923188286
+
166812428559392
+
284004949332581
+
562115670229032
+
549026638282552
+
437576476020553
+
14566907141898
+
46708181890450
+
62313440981967
+
127778677675833
+
330504750042287
+
510633366982448
+
541159770543027
+
132463454639608
+
408048385933909
+
19534901703219
+
167114919798553
+
278527915757402
+
102815478610376
+
150266176348267
+
530354406858497
+
453042756287736
+
48887154128461
+
365344811369461
+
12126751275995
+
123993004151835
+
344629680425481
+
550899643954680
+
146340981547307
+
454786973542684
+
501010736140301
+
289056969634721
+
397587872146276
+
2174113488242
+
208667122296511
+
182888350269357
+
470017389043963
+
174518916295537
+
214552545899840
+
262782697922098
+
134788867765933
+
367085974260636
+
554409438853802
+
420948933837777
+
455522571390322
+
124831505380245
+
155740997113385
+
274010224305989
+
83370536371642
+
543572315919977
+
329052723048827
+
518139367819196
+
462416272445712
+
332345131870882
+
393186021434820
+
419671803355776
+
115382824273406
+
470282020510768
+
185141420454036
+
42734359180863
+
167282907500231
+
73353898280494
+
6648095822369
+
32048561201262
+
288434047549766
+
480181909326150
+
146913110778668
+
515426427788552
+
284388591874454
+
447956707600792
+
89252787353972
+
96558814797775
+
62878896205573
+
326202594058535
+
426098559981298
+
219695052754663
+
390765585983920
+
549378613500346
+
70263847891740
+
517008251309114
+
328392291885067
+
562518908022957
+
420587076835439
+
275191197082879
+
325767490265087
+
392508621207176
+
85541093459
+
501070386333897
+
161353190070398
+
448958147870071
+
185720958343758
+
559038391297690
+
328146398661322
+
126854650446469
+
153427740939119
+
386359655344879
+
349262115858680
+
87721260957105
+
439177663744208
+
326923812493117
+
236648510210453
+
203584285187206
+
101624973720898
+
139686835596394
+
385642194351273
+
355771581327109
+
507031725620620
+
524495752783631
+
183099410056715
+
84666652432595
+
351111847252926
+
262147501693130
+
164427427374203
+
385281049138642
+
289597306490642
+
76340021958996
+
257435260207122
+
430582357248138
+
509982781152513
+
277279155207789
+
346236778269562
+
132684349312958
+
183934240303173
+
145081289643067
+
132132700045925
+
5627230448821
+
48473306319385
+
381141606675121
+
420214692698453
+
214698997495007
+
323592366982384
+
168732626366616
+
439425803820215
+
63544202540563
+
138242089047145
+
375811194676740
+
559140756424209
+
101185865779466
+
117258746004261
+
115284002169991
+
365179366412947
+
409031671045823
+
448091877001324
+
557347354586119
+
476950836524672
+
276154040742885
+
455402167884596
+
392634529426562
+
52549162117863
+
139303835304998
+
376761760358087
+
79314432493330
+
393942914626979
+
416955689060131
+
343218174705566
+
380739544437102
+
104891885244850
+
401670250654630
+
88458875946998
+
298440458431810
+
279287931153785
+
489659112268894
+
389525783453513
+
167889475738004
+
410476752564180
+
531188923681915
+
496070313575527
+
148844162663222
+
375565285223057
+
454869552496741
+
16079160074520
+
529141968466117
+
456309789996017
+
355982125422812
+
77665783303807
+
255415068574128
+
419645033859422
+
535899565802189
+
427026443808551
+
304886104235610
+
63813191429013
+
337592273757387
+
316191629977335
+
427932266762721
+
275051062030262
+
287389427660196
+
85342152945868
+
25120229452331
+
207959510733908
+
526251060504047
+
539965694955807
+
137117157822118
+
550219108879217
+
74742361465476
+
446933750202615
+
472645873461808
+
531905907514767
+
527634360277461
+
226525561218664
+
5513011599653
+
319497976104713
+
162104761227436
+
324339976537342
+
395254176289838
+
160885730404142
+
116775894531633
+
548355761034347
+
77883725691152
+
509378022740168
+
143110701934829
+
248400739956879
+
252816632851765
+
124248090164812
+
273043580096539
+
77248846910575
+
108095175460213
+
200419577876467
+
455439545179548
+
255143892965194
+
79337431949450
+
499486550932403
+
151920401525733
+
246347931210030
+
398264348868158
+
356921403632712
+
416976978713778
+
62550101642256
+
539162094904846
+
241300223504305
+
371234617293083
+
377480005378126
+
256728882359867
+
473817607951163
+
404805849509856
+
255589957262174
+
536003397737518
+
409504280780088
+
462604266879479
+
455610146686064
+
139022013893693
+
541640250917889
+
34135586860392
+
528884695574852
+
448466312091769
+
26127983295753
+
158632248635959
+
540362092137539
+
166361533681704
+
347986482489603
+
511380069678311
+
262607239672299
+
456154003553896
+
102886612270602
+
298852335978173
+
397987908749462
+
226618499080577
+
460049908642141
+
174148765268093
+
277248892168313
+
206195430127836
+
346220042130757
+
377427157138049
+
293683918180939
+
510607102677907
+
121887407146502
+
371302495035340
+
192159441360045
+
432710956811031
+
397908280539056
+
521437239297124
+
545963436163520
+
515805480403501
+
206647433890373
+
477935784578574
+
384122562791212
+
237504309474062
+
239387803646296
+
385616465642634
+
121347156729217
+
501205030915983
+
4164713007124
+
144278073591748
+
476803224950481
+
191571866883374
+
197642063769214
+
217708004782296
+
301280748245662
+
79073881133065
+
119107650596178
+
335138707204953
+
452784722707600
+
337506667457484
+
113724494802352
+
254858332488566
+
387683614033850
+
426292386956773
+
214463745624483
+
299540905586858
+
350550197742116
+
536405029293329
+
494775402599482
+
2582560119292
+
89877881326870
+
400097828536482
+
184830838090784
+
176336002630858
+
67461897507623
+
478995461021135
+
66212052730031
+
328039865962058
+
326092476168529
+
25274780856063
+
352789983272670
+
276431320475127
+
133999347173556
+
111279717488096
+
343266002684336
+
474028558955039
+
174619394455543
+
162732324430877
+
113448726562399
+
259456334175541
+
537017932790511
+
256853952618920
+
150111292636639
+
277526884477793
+
510559701678610
+
249878769050331
+
385842702926764
+
15186474043730
+
156884477804410
+
275247335709306
+
416740982448921
+
300462543096595
+
278531216467315
+
16332494626990
+
282875090733536
+
5872643715074
+
300042207849628
+
456104839840493
+
287174965481715
+
207117476286466
+
394987711786195
+
400207956239096
+
387260891911120
+
524592377138341
+
415784639512725
+
410596586356053
+
248405579939633
+
338855127817907
+
146033129177226
+
517742414815392
+
471230574297887
+
546712543433971
+
538391752986732
+
186906067746185
+
22509342552195
+
85625730211494
+
538910150773912
+
132420618246240
+
284414081405754
+
255891448972987
+
196857919027085
+
138738791817002
+
485493440771638
+
147747408894904
+
33245855503122
+
421102519976991
+
108184025390613
+
131789306489093
+
343148913656154
+
314062251052588
+
23891222108866
+
294396601766718
+
136961347844318
+
385797126658710
+
36852707675320
+
155408024053040
+
562391020571128
+
318250946457455
+
484794697907639
+
269127810495416
+
24673202576945
+
401486731731305
+
166990997418947
+
48645416709342
+
240560106665056
+
407276162339995
+
242965253828537
+
176797321556635
+
208847827219988
+
135565798765472
+
326859246103528
+
135198931577480
+
410885360168920
+
555348188358315
+
64233815465165
+
307676899028702
+
168160314639706
+
113660045194141
+
3128220114794
+
420257558459001
+
395295630150417
+
454636247945816
+
3912100568058
+
494987442103801
+
335326780570776
+
75802547174538
+
378193105275106
+
138945925852743
+
384233285798074
+
400365114660432
+
65737092191342
+
286757515297424
+
232114444758437
+
289104482288261
+
223453260053196
+
506228647097813
+
559481202416651
+
137336699186386
+
380487096861383
+
118245803037563
+
122415671398605
+
395932516015848
+
167790904763894
+
65069567652510
+
315128784107527
+
67125705937428
+
103603394318896
+
35385192134369
+
530173165429241
+
61725685300127
+
322602007668223
+
439387247925334
+
503418099642988
+
484067158942713
+
531849439905068
+
224459007739261
+
24378087402780
+
2090476358503
+
383461739326334
+
476060700905306
+
505276675340888
+
236031974956105
+
377951917531087
+
305903237010845
+
334278173181544
+
96194049575420
+
107191325459762
+
257553430116094
+
184960433166364
+
128404000675271
+
54087565604499
+
296324196697139
+
485118648856374
+
407718809040549
+
114039487816787
+
409597366793132
+
405161536291390
+
475151482301763
+
185757824602754
+
527831890043980
+
508515681994562
+
302259042109687
+
479888176285502
+
37430750914659
+
495167532286372
+
2245085885737
+
191980106108419
+
106185415623900
+
90785673324634
+
385723748232181
+
377401924893285
+
370806548023962
+
328904038345546
+
289101637320534
+
48387659479037
+
438413210453605
+
138031258795004
+
36848011421152
+
251975389894768
+
430485690000143
+
370022736362871
+
54325220063190
+
93315079111354
+
234792194674992
+
299181675379516
+
199867118084202
+
447200493402353
+
55093856317585
+
455429252586707
+
13982586844900
+
81913111360659
+
287572871184619
+
506866685578822
+
247684641487649
+
417035324377295
+
338068029231776
+
185739412688546
+
558172813082916
+
241288155016777
+
286910058459724
+
86362733475456
+
135487703859586
+
549534590875975
+
252344411558105
+
251457584553746
+
109015390838264
+
398033365679282
+
369972994863616
+
390451769918555
+
266647736384980
+
385957200620673
+
543364449059874
+
454726294169283
+
13913836326415
+
226211403507929
+
224941477401670
+
456832903203951
+
191797765138125
+
524061239673962
+
375982974685691
+
536150717345034
+
293616346522039
+
126501835719822
+
279884390123033
+
350827911840968
+
557928976098849
+
341417081837800
+
284436254344417
+
479366194607605
+
163235426756573
+
314272700526518
+
205048888497471
+
256187819498826
+
546762427419358
+
487593130608709
+
363195648042915
+
531786619046694
+
357724622349762
+
505159674786341
+
386031269423540
+
167135877727039
+
148805569159387
+
66651488174771
+
348938161012725
+
78798843584284
+
177370666445446
+
253022239408246
+
516459668991453
+
95954548928192
+
138731604119786
+
242916105575718
+
509267655662974
+
164008930892787
+
106317666384571
+
409990481363994
+
154290711081875
+
201821843876119
+
88332126514130
+
237295909029197
+
467793554347828
+
45462740864705
+
268342166705726
+
529361112647572
+
36811532703769
+
552473505016593
+
397401572712223
+
206517687660965
+
34739741517387
+
485853082904292
+
329515805678682
+
250068097201362
+
5811305089566
+
60724160854507
+
186356501715046
+
42837916522207
+
555239978784550
+
47823342086949
+
320101501978074
+
43822102671002
+
521057735127340
+
108850874680057
+
522590519745349
+
524831363124357
+
253262685355816
+
449003256981423
+
41701122847104
+
269402097973798
+
541460349412143
+
509958043383506
+
7492668588823
+
90419359720951
+
196346261986016
+
208655722081067
+
554810298887769
+
513936709731233
+
181884588463345
+
541323800446004
+
362502397813743
+
338532779807647
+
393781827440381
+
484231163934835
+
37368887642636
+
558795326921854
+
552195424786532
+
487686086722100
+
134352870412141
+
10548867200531
+
60122626473134
+
3489391142590
+
216173153241746
+
214521290960992
+
44663209553865
+
496592595794476
+
417402679166151
+
389296175879080
+
73443182146421
+
484184471167513
+
87648380690651
+
76411099990958
+
376672915838595
+
416662481674533
+
418842094034787
+
177174243842776
+
360917121735286
+
37441255895228
+
264108716674645
+
299362787720432
+
505099464111505
+
364159003514922
+
413516151514861
+
548892821365930
+
327323809169901
+
53168968429945
+
210203102429476
+
105658860188691
+
508939674970622
+
245680776161395
+
288072594863946
+
546066920142152
+
408984495717515
+
88204503487301
+
420219365055917
+
437310420649854
+
84872120349774
+
194751885779582
+
208701305452937
+
351563087499086
+
450129679644429
+
148666187688590
+
239236123519534
+
113251449388132
+
446206949516497
+
246000641386074
+
252689833153796
+
435334860574873
+
341717773220089
+
64549016645535
+
213699870249320
+
298451558239307
+
185278005691907
+
8134577132657
+
261966279442499
+
315840584607737
+
353094021415400
+
330463604552237
+
396511234431585
+
351811096797895
+
24116628523626
+
327266253863210
+
524772929314460
+
286262429143047
+
112044214186910
+
497421176479944
+
209963628211988
+
364921149568555
+
222616259826373
+
167494081960892
+
499698833223075
+
380451940256767
+
376298943098954
+
208462778895259
+
257822644313233
+
458960916901113
+
500268391272039
+
138998774243410
+
286056250666152
+
14226665041036
+
554490653927807
+
205493591904944
+
311093374336015
+
136566800754788
+
218133725663833
+
274814661165851
+
534750291151638
+
214709273517981
+
79281401204290
+
224764905953198
+
322817916117121
+
548877324865482
+
206660505085085
+
495570162464287
+
537221325061609
+
277228017007164
+
509785550628771
+
79038292162381
+
149362868524492
+
50267611008838
+
117076334817031
+
396942178239874
+
483805769198573
+
110075887030993
+
398662759960312
+
513825778885855
+
372385946611796
+
126762615156838
+
501602330801394
+
148063225053668
+
427379720548000
+
538338046892758
+
286349639477622
+
517525189535154
+
323949348355715
+
485239694769451
+
66347360844789
+
75709762798959
+
286275492542680
+
466563938524428
+
491060402282968
+
114180510960550
+
24220681424443
+
401529619714595
+
350999068436663
+
73666255044195
+
315283280221678
+
486567916582595
+
386988771968788
+
547091287233054
+
199251969596551
+
262367207773360
+
147700215775683
+
323559607834129
+
343865160780162
+
352839210417144
+
286789170597857
+
144046104082154
+
297615167536211
+
204569901882174
+
244464598977365
+
440172658100605
+
49393055561078
+
440441952930071
+
62529050272603
+
213465906163506
+
431116933276249
+
388099250625889
+
440313935879579
+
485454470084470
+
515122155140488
+
352527058113869
+
539626852470189
+
308549434850357
+
271630505884632
+
79091553688646
+
204467863152245
+
507389383841226
+
150081616230541
+
48614681735400
+
38494761645721
+
400962294931237
+
196541694588791
+
509404781754297
+
22613353976910
+
359141441034099
+
347125970907508
+
88112667765826
+
375234617586179
+
541561456822743
+
43487805824682
+
245580139924720
+
61925346936953
+
524104340406426
+
257313383539798
+
257467918677062
+
118564317819358
+
392750785087973
+
263279929238613
+
266743143547903
+
28887057819205
+
560448405152026
+
475670452878736
+
68976100885144
+
119371715353960
+
416764485629505
+
117454786396455
+
28107867060982
+
181617471419198
+
324286432815230
+
376470658175284
+
554862101454165
+
528158502920611
+
281947519810737
+
502628687780946
+
554328274194757
+
427533335712174
+
15753321044802
+
396204966666336
+
165759879810321
+
483836196305874
+
236642041182378
+
28707001290911
+
453941000159908
+
239378018801579
+
295395596552203
+
129744526281154
+
509996132214665
+
18817467919836
+
69011914271435
+
528770649907953
+
464924927383704
+
111167850070594
+
499398260633297
+
203338517303186
+
271121505006292
+
530430854732561
+
253618104548448
+
367185126207437
+
275919660389158
+
87873304408612
+
543450629096424
+
335477470153767
+
531185565092995
+
353467590596917
+
539558595034365
+
225598648475121
+
4266598824125
+
191304659850847
+
453551208518017
+
357295063001348
+
263186304559599
+
300999306013676
+
77019074405259
+
226263109115314
+
248493294223107
+
76051058021610
+
281446420791413
+
165573379200741
+
208551587249223
+
167271839095269
+
383400878284206
+
298337501656080
+
124172939953146
+
555516114071984
+
495886062434862
+
370105294988027
+
117518571341234
+
535396467789758
+
462531694761674
+
501182977540792
+
204496381162149
+
25969155651589
+
467727993347850
+
353565855652763
+
107307789527891
+
191835803404538
+
436143175338541
+
246324312888904
+
27569427736847
+
26574523143644
+
139788807089135
+
176401248007787
+
224258345415143
+
528751806467589
+
452711776828434
+
3422299653756
+
155986186068180
+
410378589362967
+
415145311387608
+
179958057198998
+
267710841876153
+
496649721067563
+
6017796745068
+
298191870572960
+
393165757002946
+
65769991202474
+
253237962273185
+
209146854330194
+
107757689277939
+
443902289475155
+
327302234127556
+
379337635400148
+
122249492301373
+
517281519310874
+
408584526628391
+
453273285660630
+
115058082240098
+
265469790821220
+
198447908303968
+
93868274574192
+
503279938554547
+
268867654076452
+
453784106826062
+
175503260355149
+
84101857588793
+
324115653720005
+
467419147023362
+
51418409329448
+
72864581581592
+
104393802122250
+
160012575558600
+
338831657068830
+
357455127413667
+
143756694868069
+
215217688048563
+
537027874668719
+
73932131117673
+
74181200853882
+
554540963128042
+
486317747175726
+
127243450453974
+
204813394215205
+
507073368512394
+
113200659469356
+
166888784896861
+
253884791723332
+
313515157965308
+
326221984355446
+
436287539073725
+
560950751003125
+
416839043124797
+
124348810428443
+
274103286464266
+
118685215448145
+
548999961779691
+
457117834790631
+
167566351250786
+
363140782790450
+
291713213362971
+
102909906319888
+
507891379594132
+
524090581833788
+
431695964171760
+
528260720020178
+
215538497228820
+
265015077579563
+
339652161321033
+
516261525562674
+
437570091922631
+
490514737665222
+
39629294184591
+
132080844454118
+
87126816519167
+
357542868502579
+
83614098374336
+
556110799346171
+
547616707073349
+
47428347578027
+
339955543030250
+
466654836920333
+
540612031208814
+
75068256263748
+
253332988043717
+
516559830977242
+
103091334549787
+
1857237753590
+
48231689767618
+
460056775695850
+
505801010046218
+
476826442637823
+
506362177553486
+
143364931880380
+
276066489933080
+
338528060828864
+
464816954524112
+
469791767111983
+
455523496219358
+
297177825168277
+
546323555093840
+
176252665665347
+
185104463289193
+
535349486532929
+
393353469154641
+
63080739338750
+
297406102825472
+
248597051099131
+
441114193997943
+
448757303674787
+
78008363064472
+
471216568470612
+
506677522986754
+11
inputs/day5test.txt
···
+
3-5
+
10-14
+
16-20
+
12-18
+
+
1
+
5
+
8
+
11
+
17
+
32
+76
src/day5.zig
···
+
const std = @import("std");
+
const Allocator = std.mem.Allocator;
+
const ArrayList = std.ArrayList;
+
+
const Range = struct {
+
low: usize,
+
high: usize,
+
+
pub fn compareByLow(_: void, a: Range, b: Range) bool {
+
return a.low < b.low;
+
}
+
};
+
+
pub fn run(allocator: Allocator, input: []u8) !void {
+
var sections = std.mem.tokenizeSequence(u8, input, "\n\n");
+
+
var answer1: u64 = 0;
+
var answer2: u64 = 0;
+
+
var ranges = std.mem.tokenizeScalar(u8, sections.next().?, '\n');
+
var items = std.mem.tokenizeScalar(u8, sections.next().?, '\n');
+
+
var valid_ranges = try ArrayList(Range).initCapacity(allocator, 100);
+
defer valid_ranges.deinit(allocator);
+
+
var max: u64 = 0;
+
+
while (ranges.next()) |line| {
+
var range = std.mem.tokenizeScalar(u8, line, '-');
+
+
const low = try std.fmt.parseInt(u64, range.next().?, 10);
+
const high = try std.fmt.parseInt(u64, range.next().?, 10);
+
+
if (high > max) {
+
max = high;
+
}
+
+
try valid_ranges.append(allocator, .{ .low = low, .high = high });
+
}
+
+
while (items.next()) |line| {
+
const id = try std.fmt.parseInt(usize, line, 10);
+
+
for (valid_ranges.items) |range| {
+
if (range.low <= id and id <= range.high) {
+
answer1 += 1;
+
break;
+
}
+
}
+
}
+
+
std.mem.sort(Range, valid_ranges.items, {}, Range.compareByLow);
+
+
var merged_ranges = try ArrayList(Range).initCapacity(allocator, valid_ranges.items.len);
+
defer merged_ranges.deinit(allocator);
+
for (valid_ranges.items[0 .. valid_ranges.items.len - 1], 0..) |item, i| {
+
var other = &valid_ranges.items[i + 1];
+
if (item.high < other.low) {
+
try merged_ranges.append(allocator, item);
+
continue;
+
}
+
+
other.low = item.low;
+
if (other.high < item.high) {
+
other.high = item.high;
+
}
+
}
+
try merged_ranges.append(allocator, valid_ranges.getLast());
+
+
for (merged_ranges.items) |item| {
+
answer2 += item.high - item.low + 1;
+
}
+
+
std.debug.print("Answer P1: {d}\n", .{answer1});
+
std.debug.print("Answer P2: {d}\n", .{answer2});
+
}
+2
src/main.zig
···
const day2 = @import("./day2.zig");
const day3 = @import("./day3.zig");
const day4 = @import("./day4.zig");
+
const day5 = @import("./day5.zig");
pub fn main() !void {
var args = std.process.args();
···
2 => try day2.run(input_content),
3 => try day3.run(input_content),
4 => try day4.run(input_content),
+
5 => try day5.run(allocator, input_content),
else => {},
}
}