adventofcode

git clone https://git.ce9e.org/adventofcode.git

commit
466594eb53070c607637491ae1ddf43a0a229012
parent
bd1eb2098f7ac65aaa35099ccf257c873057b2fe
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2025-12-05 13:53
2025-12-05

Diffstat

A 2025/05/input.txt 1178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A 2025/05/solution.zig 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A 2025/05/test.txt 11 +++++++++++

3 files changed, 1271 insertions, 0 deletions


diff --git a/2025/05/input.txt b/2025/05/input.txt

@@ -0,0 +1,1178 @@
   -1     1 90876390158586-99371575473204
   -1     2 141258267394867-149613795277295
   -1     3 114352619044986-116556737957603
   -1     4 496343406752773-499182624059648
   -1     5 87359911540483-87539506199605
   -1     6 85673777496030-86318273612057
   -1     7 332583427607236-340324718339476
   -1     8 275408809160633-280084260304217
   -1     9 344896263920634-349859871462659
   -1    10 373928423179738-380690534659312
   -1    11 417743034648014-418071037437529
   -1    12 386959031977450-390566109048119
   -1    13 252452420296913-252936125659291
   -1    14 111174688657181-113775499461222
   -1    15 122777011189689-127167385054796
   -1    16 456058047019765-456296360950336
   -1    17 211397092722052-216804535064877
   -1    18 221810768643796-226724511551251
   -1    19 152624848414895-157415393803906
   -1    20 89904241743331-90052773587988
   -1    21 122777011189689-122777011189689
   -1    22 416379059689149-417011326470564
   -1    23 117957581766055-120046942543383
   -1    24 496343406752773-499182624059648
   -1    25 181104353660135-183040639636842
   -1    26 253542703667153-253745956803388
   -1    27 86318273612057-86643206002641
   -1    28 367926272582055-367926272582055
   -1    29 186437316592844-188146979854730
   -1    30 515848576564116-518421101765630
   -1    31 528755492634142-529984862935617
   -1    32 255003475815792-255808567067998
   -1    33 32657821999605-34947413077130
   -1    34 256501995838725-257149482975764
   -1    35 456985095151714-457493597176878
   -1    36 454067611759278-454254905285358
   -1    37 252207745527457-252452420296913
   -1    38 327983918520728-329470490991142
   -1    39 446739162991951-450851882535949
   -1    40 50938120834653-56238196224716
   -1    41 458304744146293-459085105793951
   -1    42 502745313557205-505059448157435
   -1    43 460816711199472-461519964842618
   -1    44 113001096176801-114951970790650
   -1    45 414608487329960-415315808855042
   -1    46 459723301780494-460267795450900
   -1    47 243470544687797-243470544687797
   -1    48 297573056530509-301233718284875
   -1    49 373928423179738-373928423179738
   -1    50 260326174863435-260911923751753
   -1    51 398066274502603-399211458376929
   -1    52 460267795450900-461110539940075
   -1    53 257149482975764-257904304553825
   -1    54 251624602215023-252452420296913
   -1    55 460267795450900-460816711199472
   -1    56 441248141074895-441248141074895
   -1    57 344896263920633-344896263920633
   -1    58 193885735012008-193885735012008
   -1    59 88869927745829-89268404263623
   -1    60 466198614887700-466198614887700
   -1    61 87539506199605-88171474116217
   -1    62 185018103265947-186984250274769
   -1    63 420393536451304-420531818928372
   -1    64 461110539940075-461765857602637
   -1    65 322910000821537-324401786180173
   -1    66 243470544687797-248680587367104
   -1    67 104687083217159-108357959016794
   -1    68 221810768643796-226724511551251
   -1    69 239681427112342-239681427112342
   -1    70 256976515051550-257676370926541
   -1    71 329142947096190-330556394434212
   -1    72 171717858253493-179229923962319
   -1    73 132077766588073-139072047044284
   -1    74 306264986633411-310078028090529
   -1    75 272204825838361-275408809160632
   -1    76 139072047044285-139072047044285
   -1    77 313531872327168-320586283321557
   -1    78 475084991181179-480862930243658
   -1    79 413974790503766-414801891454972
   -1    80 11141570104725-11141570104725
   -1    81 259068794831487-259154793582483
   -1    82 89184008289399-89552781322884
   -1    83 363085957395237-367926272582055
   -1    84 425727121854836-428443044656873
   -1    85 416086295692540-416844833117190
   -1    86 466198614887701-468841081639720
   -1    87 323757108257510-325454348822436
   -1    88 510374251359826-512323122653236
   -1    89 554198235000456-559028613906715
   -1    90 259068794831487-259154793582483
   -1    91 11141570104726-15933553611969
   -1    92 485450557338398-490887581884439
   -1    93 26152338987444-27756185674740
   -1    94 256633357207677-256976515051550
   -1    95 256501995838725-256633357207677
   -1    96 253186913055786-253873226345555
   -1    97 261960824978986-265261199906477
   -1    98 327032432389889-328659634659269
   -1    99 416379059689149-416561357259205
   -1   100 475084991181179-477100092347951
   -1   101 80956967574891-81226489981139
   -1   102 214875225414603-220846748135661
   -1   103 394633239295468-399211458376929
   -1   104 414801891454972-415456565595093
   -1   105 56238196224716-56238196224716
   -1   106 504488488179997-506512034077014
   -1   107 444246560749102-447660244795200
   -1   108 459481552442801-459723301780494
   -1   109 1151710660142-7676495585938
   -1   110 282235665911450-291089830552559
   -1   111 459481552442801-460267795450900
   -1   112 193885735012009-196904666162586
   -1   113 41433078795972-46377519150175
   -1   114 282235665911450-287812146896127
   -1   115 352370106124031-361126889963928
   -1   116 418576273148305-419275080135414
   -1   117 456558354505161-456985095151714
   -1   118 406254524299651-408295233216740
   -1   119 182676327706062-184190660357077
   -1   120 404243543603548-411168368508367
   -1   121 63167243253321-68525533143111
   -1   122 87539506199605-87781870827527
   -1   123 325058038147145-326452796233371
   -1   124 534005664637784-540410603076141
   -1   125 65588881521349-68525533143111
   -1   126 161884727433167-169964205711219
   -1   127 488387778825741-490887581884439
   -1   128 163911135344580-167399671914139
   -1   129 325791836005836-327307042385742
   -1   130 458459382967662-459308823907866
   -1   131 454407882296934-455213313300674
   -1   132 302993612904685-307549467225504
   -1   133 187532421272857-189593807559271
   -1   134 207068387403153-208741925105837
   -1   135 72754037016880-77809090376660
   -1   136 415791999789505-416561357259205
   -1   137 546869080124463-550349236700735
   -1   138 46377519150176-49741246877607
   -1   139 32657821999605-38449441060726
   -1   140 116302433094431-118583152969685
   -1   141 457493597176878-458087415213352
   -1   142 235615253036354-239681427112342
   -1   143 329956222857843-331408496821644
   -1   144 383312762819365-386959031977448
   -1   145 456296360950336-456985095151714
   -1   146 23021223252720-26152338987442
   -1   147 506109175507315-508063496690513
   -1   148 507447031716905-509193320936404
   -1   149 423802746954042-430254451463202
   -1   150 88171474116217-88869927745829
   -1   151 101813796440614-107372968985639
   -1   152 508816435279286-510816216571702
   -1   153 80956967574891-81579222275923
   -1   154 202423353872861-207068387403151
   -1   155 94152340752372-96668070795648
   -1   156 332583427607236-340324718339476
   -1   157 436337997335654-441248141074895
   -1   158 419814839511698-420393536451304
   -1   159 176077801338504-179229923962319
   -1   160 540410603076142-540410603076142
   -1   161 256309585648535-256501995838725
   -1   162 420745790071546-421549488542584
   -1   163 524639744941000-528755492634141
   -1   164 261960824978986-269135377690892
   -1   165 89184008289399-89904241743331
   -1   166 183939053345146-185846624617375
   -1   167 1151710660142-7676495585938
   -1   168 515848576564116-515848576564116
   -1   169 455213313300674-456058047019765
   -1   170 321763411738242-323539728298137
   -1   171 419275080135414-420031344685115
   -1   172 157415393803907-157415393803907
   -1   173 189005144266116-190548795231625
   -1   174 320586283321558-320586283321558
   -1   175 294114537270800-297573056530508
   -1   176 559028613906717-561202714579424
   -1   177 81827245866566-82041965750458
   -1   178 
   -1   179 9163401197559
   -1   180 158818456706003
   -1   181 312148307515374
   -1   182 552153472513629
   -1   183 233662752535988
   -1   184 146489947306252
   -1   185 322269632307881
   -1   186 516457499115886
   -1   187 317387035609686
   -1   188 490205655626613
   -1   189 289812623697579
   -1   190 139383223625070
   -1   191 67759227064352
   -1   192 279739867607753
   -1   193 340475327853129
   -1   194 370398463277050
   -1   195 454267632298356
   -1   196 497044296776404
   -1   197 474166836905668
   -1   198 413944736615662
   -1   199 387454434132096
   -1   200 192722333849769
   -1   201 32965418738730
   -1   202 331129551356353
   -1   203 434914239786762
   -1   204 392691761433652
   -1   205 482371793886983
   -1   206 374373818000539
   -1   207 522373042671537
   -1   208 59423956013146
   -1   209 475513986474369
   -1   210 166355760619544
   -1   211 326793642144617
   -1   212 104598990034711
   -1   213 533074262543939
   -1   214 80920631052849
   -1   215 213932326779430
   -1   216 228043361172934
   -1   217 273500909262866
   -1   218 311709834673991
   -1   219 27147906651339
   -1   220 110260983204379
   -1   221 421240409276742
   -1   222 229071889508430
   -1   223 495453447279009
   -1   224 112813389763489
   -1   225 168199272480193
   -1   226 221721895000
   -1   227 231047822563019
   -1   228 5815865816814
   -1   229 515698033225541
   -1   230 429093425874850
   -1   231 376453098878620
   -1   232 88419601648989
   -1   233 24100796668620
   -1   234 142295587573371
   -1   235 546576259992197
   -1   236 504995298082248
   -1   237 425396211534385
   -1   238 41106294013243
   -1   239 62045036852276
   -1   240 291968305718857
   -1   241 523836161515386
   -1   242 273656556558051
   -1   243 302620888906281
   -1   244 463772229712677
   -1   245 236869791096602
   -1   246 237406143099062
   -1   247 290505453886975
   -1   248 473168239853708
   -1   249 330030387153064
   -1   250 402463573410913
   -1   251 386331854322772
   -1   252 61999920910292
   -1   253 215043846226668
   -1   254 454056355913415
   -1   255 118316912777301
   -1   256 271047239440225
   -1   257 76951168145227
   -1   258 320766788765089
   -1   259 346357522773576
   -1   260 532911529610311
   -1   261 366000529725277
   -1   262 455755040889550
   -1   263 314769400218117
   -1   264 414826999593372
   -1   265 431602638534259
   -1   266 362131063404284
   -1   267 495577867401239
   -1   268 517870462628462
   -1   269 215806643565249
   -1   270 278447101395456
   -1   271 390604559482823
   -1   272 180305906398963
   -1   273 138270376297296
   -1   274 253104258907692
   -1   275 19451931757985
   -1   276 33059531481229
   -1   277 415933257870503
   -1   278 371448343538087
   -1   279 228270815962830
   -1   280 228929272310964
   -1   281 109415109234230
   -1   282 519097524550057
   -1   283 259541994082476
   -1   284 336565486295871
   -1   285 76523670048561
   -1   286 562105673640580
   -1   287 508928549032738
   -1   288 456651120036719
   -1   289 389270902975389
   -1   290 291856972627889
   -1   291 339062201650619
   -1   292 484202497295920
   -1   293 155218132273661
   -1   294 443260799194487
   -1   295 435333497560717
   -1   296 240426086362000
   -1   297 22189454203919
   -1   298 12630784256797
   -1   299 544241292792708
   -1   300 166529170866816
   -1   301 127920840414204
   -1   302 476268217187456
   -1   303 94730309508361
   -1   304 508647899880782
   -1   305 207401551940062
   -1   306 280631657451479
   -1   307 489282369430820
   -1   308 75310710948582
   -1   309 123570783918792
   -1   310 231506048891976
   -1   311 168886616879671
   -1   312 529496564010583
   -1   313 412105755885460
   -1   314 434805679090
   -1   315 469197403809928
   -1   316 124807001131180
   -1   317 46013469504336
   -1   318 522789662225284
   -1   319 22940845724776
   -1   320 406862187442980
   -1   321 458400644513339
   -1   322 384460560435837
   -1   323 283085649647800
   -1   324 13655606098859
   -1   325 445044089462779
   -1   326 431142672311911
   -1   327 79056720440152
   -1   328 34401759229502
   -1   329 520178161148095
   -1   330 248098930928116
   -1   331 521983593833953
   -1   332 470676778027815
   -1   333 343743064511549
   -1   334 250938971153324
   -1   335 76071059146436
   -1   336 356642465746953
   -1   337 269717730101950
   -1   338 213215982569373
   -1   339 129096003648861
   -1   340 330155928599697
   -1   341 483074804574399
   -1   342 274522393652777
   -1   343 3186010395731
   -1   344 515647883180694
   -1   345 523409091260622
   -1   346 227252765858538
   -1   347 227992100046168
   -1   348 489005994340846
   -1   349 491755629466279
   -1   350 550706195147989
   -1   351 502413482030902
   -1   352 536764233752494
   -1   353 195744475420682
   -1   354 438578075896473
   -1   355 402003055849056
   -1   356 259319376114235
   -1   357 222208130323604
   -1   358 403936234521711
   -1   359 100804574522328
   -1   360 390511861943606
   -1   361 318572595191055
   -1   362 160389886929065
   -1   363 188466464305356
   -1   364 329651347488537
   -1   365 482512538416220
   -1   366 302122544474297
   -1   367 195953623760947
   -1   368 427097476543924
   -1   369 412184206398442
   -1   370 39957361112244
   -1   371 139173317451174
   -1   372 406965029436465
   -1   373 146047425495746
   -1   374 532076910617545
   -1   375 64001031218127
   -1   376 325191999419252
   -1   377 299948256045416
   -1   378 308524702563764
   -1   379 382054174168567
   -1   380 561410441323586
   -1   381 467190688573899
   -1   382 385039391610586
   -1   383 340664876995588
   -1   384 148409523639466
   -1   385 438462690950354
   -1   386 150498623961148
   -1   387 58297508270067
   -1   388 428013505901864
   -1   389 439062183845584
   -1   390 487768272055681
   -1   391 200065511574509
   -1   392 475023760400379
   -1   393 288930064006407
   -1   394 134609446334668
   -1   395 266949872643074
   -1   396 3598650469254
   -1   397 400301389511327
   -1   398 179382777219145
   -1   399 483102225664896
   -1   400 253049177124215
   -1   401 406991315675070
   -1   402 86779597538033
   -1   403 256063526955116
   -1   404 167873830134010
   -1   405 506946518324093
   -1   406 95560235590399
   -1   407 389106647238673
   -1   408 509770058801329
   -1   409 160599674880171
   -1   410 372405620083832
   -1   411 524085421989876
   -1   412 128450768102669
   -1   413 314670218488691
   -1   414 405732007118180
   -1   415 506854658281385
   -1   416 460096512969966
   -1   417 123257990153394
   -1   418 290327798056064
   -1   419 227891675768131
   -1   420 476552467765126
   -1   421 182465777803326
   -1   422 49472613689209
   -1   423 166612189347920
   -1   424 276183711911464
   -1   425 324644549597227
   -1   426 338911989317554
   -1   427 19775707684504
   -1   428 558934531905621
   -1   429 197151099516336
   -1   430 110140750207674
   -1   431 532433347511924
   -1   432 228487326329147
   -1   433 364841086687069
   -1   434 287624941045705
   -1   435 300137110851409
   -1   436 396237045817688
   -1   437 185852174370908
   -1   438 511022157652409
   -1   439 308630498267077
   -1   440 218988945763277
   -1   441 71505631073776
   -1   442 22473741394600
   -1   443 14514185584946
   -1   444 8522304411766
   -1   445 163563871234779
   -1   446 75764347817641
   -1   447 169253373130675
   -1   448 420875656317088
   -1   449 333327956149323
   -1   450 98167243583156
   -1   451 389237767146983
   -1   452 500971720160178
   -1   453 11121122140355
   -1   454 156836458586559
   -1   455 176466657233638
   -1   456 262405791748990
   -1   457 26990304712966
   -1   458 168075776760200
   -1   459 560300568485362
   -1   460 561357465419392
   -1   461 218760168067223
   -1   462 301093214656467
   -1   463 438345062050910
   -1   464 543783894224718
   -1   465 502309971524381
   -1   466 456720070982782
   -1   467 58609785487716
   -1   468 531844320575931
   -1   469 135675280951318
   -1   470 379235744218694
   -1   471 277698819891289
   -1   472 476257535812746
   -1   473 427950844104107
   -1   474 47508063323791
   -1   475 66404235049100
   -1   476 323794074934999
   -1   477 205459853350577
   -1   478 2503030994488
   -1   479 286481823235757
   -1   480 353144787329504
   -1   481 74155955057876
   -1   482 405052891182672
   -1   483 228630232690288
   -1   484 451860760508088
   -1   485 493168123109603
   -1   486 118147546878371
   -1   487 250043361890479
   -1   488 85000875657667
   -1   489 472919880458102
   -1   490 101479239794725
   -1   491 433232752433446
   -1   492 6004942799667
   -1   493 503163883398050
   -1   494 297372394082296
   -1   495 417544946940533
   -1   496 54942764933530
   -1   497 87840999902572
   -1   498 60444569823530
   -1   499 39751084976757
   -1   500 241587172388837
   -1   501 156995585561033
   -1   502 391073899857904
   -1   503 265850214502840
   -1   504 100532551452657
   -1   505 400841316189118
   -1   506 541838639960011
   -1   507 292463108221224
   -1   508 203549719031344
   -1   509 66820765271822
   -1   510 402372550222314
   -1   511 435136106150290
   -1   512 534173470052307
   -1   513 489360037730027
   -1   514 471292587823117
   -1   515 378685408561352
   -1   516 516796187772506
   -1   517 61966242073578
   -1   518 364441060684284
   -1   519 546323227244850
   -1   520 246500711552813
   -1   521 408737703942108
   -1   522 393352755177135
   -1   523 443974804274596
   -1   524 370111831104358
   -1   525 64851438183175
   -1   526 329578230359798
   -1   527 308712280262283
   -1   528 456691674773908
   -1   529 26592466612721
   -1   530 550232303829458
   -1   531 304401996535246
   -1   532 379603682500263
   -1   533 433792177716816
   -1   534 369562115185447
   -1   535 448657578625855
   -1   536 446111339603810
   -1   537 199520316817287
   -1   538 303863579350994
   -1   539 219716209883783
   -1   540 69582482351798
   -1   541 352188100111117
   -1   542 60309071000910
   -1   543 276221637847234
   -1   544 424849029072321
   -1   545 533625434713137
   -1   546 108788892776662
   -1   547 320644119591327
   -1   548 169943688622612
   -1   549 290307918024920
   -1   550 271365530616627
   -1   551 149871509966353
   -1   552 399899313659808
   -1   553 498618926374216
   -1   554 340969868432338
   -1   555 114862416369659
   -1   556 126574702887760
   -1   557 273670149879536
   -1   558 62318600534005
   -1   559 483599374241984
   -1   560 337847254095524
   -1   561 374183055713382
   -1   562 245079673743465
   -1   563 219825762304528
   -1   564 490433378105545
   -1   565 390065703268007
   -1   566 234234595195547
   -1   567 400209681791812
   -1   568 143314439288739
   -1   569 40786640975635
   -1   570 228002660758159
   -1   571 352047935264686
   -1   572 482850250578180
   -1   573 147404348187492
   -1   574 240965917923046
   -1   575 241814111818082
   -1   576 294019641838058
   -1   577 43150274310742
   -1   578 442250297055054
   -1   579 55855691882049
   -1   580 477909042957987
   -1   581 475653207653884
   -1   582 323652468591385
   -1   583 112473621264323
   -1   584 70558702366597
   -1   585 120748204089005
   -1   586 229988963434675
   -1   587 248591630801994
   -1   588 402442958335548
   -1   589 376586653986537
   -1   590 129152683235432
   -1   591 516024993616305
   -1   592 471096479102683
   -1   593 446539545827961
   -1   594 173407602929549
   -1   595 368512742348401
   -1   596 4974356897661
   -1   597 173386990766979
   -1   598 509415772325521
   -1   599 544967878526356
   -1   600 308861850100698
   -1   601 161266318267407
   -1   602 502384393689113
   -1   603 281594749221165
   -1   604 142930467360218
   -1   605 147725481586832
   -1   606 427519529321106
   -1   607 193960630536623
   -1   608 541411528670786
   -1   609 515852192999453
   -1   610 72306146040239
   -1   611 239856994563249
   -1   612 488838850839069
   -1   613 75992261996936
   -1   614 172649820425983
   -1   615 223554177457525
   -1   616 7947242023868
   -1   617 212525448215192
   -1   618 370575390007937
   -1   619 426773541718656
   -1   620 393684739731309
   -1   621 19419866742845
   -1   622 206871913760521
   -1   623 517596221415579
   -1   624 490849438183981
   -1   625 361305228082459
   -1   626 469230613059868
   -1   627 332884151592894
   -1   628 461945523327885
   -1   629 397967487629525
   -1   630 412744254405305
   -1   631 541433275689019
   -1   632 263528603494908
   -1   633 326653124630779
   -1   634 365705824496935
   -1   635 77108503111724
   -1   636 501949275678612
   -1   637 180395652478059
   -1   638 156282882623447
   -1   639 300079669533627
   -1   640 94607711515619
   -1   641 190512807645304
   -1   642 240305269046027
   -1   643 207555970577494
   -1   644 358220806573386
   -1   645 55848633614325
   -1   646 242352917241528
   -1   647 393172820334607
   -1   648 114761704646873
   -1   649 341156052735276
   -1   650 468622402320741
   -1   651 524894314811449
   -1   652 297996614600919
   -1   653 410758156001249
   -1   654 531648768240087
   -1   655 145904362489893
   -1   656 179726903564587
   -1   657 145255790527460
   -1   658 405526082561317
   -1   659 531715404944063
   -1   660 230115193150993
   -1   661 416396461734549
   -1   662 337025968848420
   -1   663 186509140483017
   -1   664 238086655337739
   -1   665 214079795664617
   -1   666 347558882961952
   -1   667 136513605518284
   -1   668 390027822564267
   -1   669 547137150734989
   -1   670 229060542693538
   -1   671 496229309693995
   -1   672 82317633430589
   -1   673 108124050772686
   -1   674 239807288086906
   -1   675 275932804089630
   -1   676 103043176331928
   -1   677 506201519496778
   -1   678 130687159737423
   -1   679 392708106920295
   -1   680 110481569204431
   -1   681 179105320289608
   -1   682 264036775187365
   -1   683 46805588609893
   -1   684 477157518831410
   -1   685 224264159905849
   -1   686 466088228218369
   -1   687 55184185982381
   -1   688 173229622178475
   -1   689 294966387937187
   -1   690 480066217349134
   -1   691 287992196025558
   -1   692 13321691326655
   -1   693 91239233050191
   -1   694 555326286930055
   -1   695 552237122648344
   -1   696 145649886337951
   -1   697 447468549575922
   -1   698 246636476258824
   -1   699 23475383401281
   -1   700 228887424352427
   -1   701 395061670155969
   -1   702 459874017290483
   -1   703 476511078044412
   -1   704 145329436670439
   -1   705 207577901193175
   -1   706 205891862825979
   -1   707 903469712595
   -1   708 8000788049680
   -1   709 123901070404658
   -1   710 30907016963061
   -1   711 203416039040784
   -1   712 94186956642008
   -1   713 436606529722434
   -1   714 442437978608495
   -1   715 425927204356303
   -1   716 145170436587298
   -1   717 122664373333703
   -1   718 39094428095591
   -1   719 243812133950830
   -1   720 152581536372668
   -1   721 417537697081911
   -1   722 477688275601426
   -1   723 292039918013249
   -1   724 483229844663431
   -1   725 529029265710294
   -1   726 487284133619794
   -1   727 477219832461903
   -1   728 461913207611042
   -1   729 34619037866000
   -1   730 463558261470208
   -1   731 300569744130936
   -1   732 81010018133367
   -1   733 445282904725230
   -1   734 2474275246313
   -1   735 200236325813831
   -1   736 83639619277997
   -1   737 78107940986614
   -1   738 268326963891666
   -1   739 494445016521611
   -1   740 504513790230498
   -1   741 109740931456853
   -1   742 405071938369436
   -1   743 306591121373183
   -1   744 241372578075831
   -1   745 478129328816854
   -1   746 323661724446809
   -1   747 62229413812159
   -1   748 358598748834599
   -1   749 478352481988622
   -1   750 542021029540667
   -1   751 427862518906240
   -1   752 464193738202897
   -1   753 157318230602906
   -1   754 334719268058319
   -1   755 326130625359688
   -1   756 144433385256600
   -1   757 532168446486435
   -1   758 350365498630427
   -1   759 119294473662906
   -1   760 251772035826073
   -1   761 309341122232480
   -1   762 277294833423452
   -1   763 422991556451958
   -1   764 332787708026536
   -1   765 262647695377177
   -1   766 533602397924924
   -1   767 543358025330181
   -1   768 358083406257181
   -1   769 43432758399977
   -1   770 90147171812289
   -1   771 472757049368060
   -1   772 120430070833630
   -1   773 495908387968493
   -1   774 65905441429403
   -1   775 548075678549952
   -1   776 450772081368588
   -1   777 411428975275261
   -1   778 532143822439735
   -1   779 360487891298170
   -1   780 524355457837910
   -1   781 485251765984509
   -1   782 364413650232083
   -1   783 247841493153820
   -1   784 85628937694361
   -1   785 307820479019535
   -1   786 109291219982556
   -1   787 284051352967304
   -1   788 343127418808644
   -1   789 464919033036006
   -1   790 258753649449837
   -1   791 484862959573138
   -1   792 53791498540362
   -1   793 403218669609798
   -1   794 205252995343532
   -1   795 383493082192476
   -1   796 424707722997380
   -1   797 34353856900045
   -1   798 170019411727923
   -1   799 160269542017778
   -1   800 504219378323988
   -1   801 403321219554501
   -1   802 201300551196654
   -1   803 319996239472553
   -1   804 246188285716406
   -1   805 115634302599169
   -1   806 494255890862599
   -1   807 520116870396480
   -1   808 477761337871643
   -1   809 237134047844955
   -1   810 68007812775645
   -1   811 260692214260301
   -1   812 369410296952736
   -1   813 253139278893076
   -1   814 500500707235771
   -1   815 554206514854411
   -1   816 491626306176221
   -1   817 369541880968860
   -1   818 91074379331282
   -1   819 6981741781316
   -1   820 425219423726320
   -1   821 497674134416629
   -1   822 352711823736717
   -1   823 305855141908927
   -1   824 245330763153570
   -1   825 208522511841849
   -1   826 527414825839210
   -1   827 446722531333910
   -1   828 148832513067070
   -1   829 63127914832898
   -1   830 529366826445946
   -1   831 296637939126715
   -1   832 10885264412200
   -1   833 346772905518748
   -1   834 20831956813725
   -1   835 312093055835434
   -1   836 320058688361080
   -1   837 235611753352351
   -1   838 120731399869570
   -1   839 6546551846336
   -1   840 288190794297225
   -1   841 283832151780669
   -1   842 539294969987460
   -1   843 341141905348871
   -1   844 265953167786262
   -1   845 38329564906528
   -1   846 201165253988296
   -1   847 162836942660631
   -1   848 38261693765967
   -1   849 147723885738795
   -1   850 83483489082914
   -1   851 101696334853405
   -1   852 161738173925829
   -1   853 269249235474100
   -1   854 518575875504063
   -1   855 180389277419841
   -1   856 137798491144289
   -1   857 396588303986958
   -1   858 213422286172624
   -1   859 128865879110556
   -1   860 545746064994936
   -1   861 472500224632826
   -1   862 293514134134217
   -1   863 498986627481586
   -1   864 167460411743475
   -1   865 49403350524909
   -1   866 300711700454377
   -1   867 174168466141927
   -1   868 162164924721141
   -1   869 306591969380774
   -1   870 50044119038161
   -1   871 456920190658338
   -1   872 101971820817671
   -1   873 368349811077317
   -1   874 198148828247087
   -1   875 242738645458621
   -1   876 189872005297387
   -1   877 239238571620031
   -1   878 393965632653044
   -1   879 219647576405230
   -1   880 262712915492349
   -1   881 384939878129868
   -1   882 350820045116642
   -1   883 538188049832737
   -1   884 352933104186798
   -1   885 32702070182272
   -1   886 207612841531339
   -1   887 494525499235948
   -1   888 496492687156993
   -1   889 198194803692955
   -1   890 346296332377373
   -1   891 262683547726046
   -1   892 114215146179068
   -1   893 391025652867992
   -1   894 457381359763374
   -1   895 495294523267845
   -1   896 370064289266247
   -1   897 525647804951143
   -1   898 417921917077653
   -1   899 70205154719881
   -1   900 75300571388150
   -1   901 383968457733281
   -1   902 36936603717203
   -1   903 483758128961309
   -1   904 213488487054617
   -1   905 428273802502662
   -1   906 172470571237879
   -1   907 493428441460173
   -1   908 354396066960641
   -1   909 469733670299270
   -1   910 244551992943885
   -1   911 189453771536478
   -1   912 380082572701575
   -1   913 127415784473214
   -1   914 544726225798472
   -1   915 163578593469912
   -1   916 248186083252409
   -1   917 392978316066628
   -1   918 50371420873713
   -1   919 498069542536837
   -1   920 46559844871587
   -1   921 411315130051798
   -1   922 182050256987188
   -1   923 268857471902369
   -1   924 419541357053932
   -1   925 532645972364332
   -1   926 529474086442517
   -1   927 259315314806566
   -1   928 286138486530569
   -1   929 237423526461342
   -1   930 146060098991418
   -1   931 423552196421325
   -1   932 162261857396422
   -1   933 151991976873486
   -1   934 390142026206798
   -1   935 475734955180312
   -1   936 343857811687007
   -1   937 58220225020496
   -1   938 442885375203754
   -1   939 304614358520741
   -1   940 227887462761061
   -1   941 19553111121432
   -1   942 358886142335764
   -1   943 562208217949878
   -1   944 111481744524167
   -1   945 474190796537537
   -1   946 126683851083923
   -1   947 183313532721437
   -1   948 115211376228948
   -1   949 342554602141680
   -1   950 426645829642572
   -1   951 555780421582825
   -1   952 514859548517356
   -1   953 189271855029295
   -1   954 346707768486592
   -1   955 558052399568079
   -1   956 219874902834059
   -1   957 473480938507801
   -1   958 454338609820787
   -1   959 319249769666112
   -1   960 303052433601658
   -1   961 325039166590428
   -1   962 562818133864851
   -1   963 482053723661048
   -1   964 179399831234719
   -1   965 329916012393963
   -1   966 257676226387094
   -1   967 361664521921716
   -1   968 77057460043747
   -1   969 457081380044440
   -1   970 542274122168414
   -1   971 238853209318636
   -1   972 104336868883223
   -1   973 451698602541785
   -1   974 28850069876211
   -1   975 131693330534195
   -1   976 82915911805295
   -1   977 408960295261710
   -1   978 350591285384904
   -1   979 293382372461972
   -1   980 347119868935760
   -1   981 82442179201124
   -1   982 166764888217027
   -1   983 27350798714087
   -1   984 209510836506591
   -1   985 62224373947403
   -1   986 229905573428880
   -1   987 299768265381110
   -1   988 340561249927292
   -1   989 260740753682754
   -1   990 170342826973294
   -1   991 550966447674995
   -1   992 190049459600603
   -1   993 326439704928205
   -1   994 216094235255818
   -1   995 384253359784274
   -1   996 92422146959059
   -1   997 469034395588722
   -1   998 482133676593321
   -1   999 457361093096032
   -1  1000 3203707061450
   -1  1001 348562826815649
   -1  1002 442708231591395
   -1  1003 358545905328936
   -1  1004 99820246607045
   -1  1005 129108282342561
   -1  1006 465596613363480
   -1  1007 342411029511720
   -1  1008 403204599555029
   -1  1009 194852812275222
   -1  1010 438971245966494
   -1  1011 6305696619496
   -1  1012 121458474565901
   -1  1013 164896008252706
   -1  1014 232986718206017
   -1  1015 39049794858669
   -1  1016 352772575929392
   -1  1017 167526351878248
   -1  1018 336508000922592
   -1  1019 41369179630176
   -1  1020 82710588995028
   -1  1021 543582532324077
   -1  1022 295770676523533
   -1  1023 40447230032671
   -1  1024 167743657437148
   -1  1025 373717583254968
   -1  1026 426016607839554
   -1  1027 242393093428673
   -1  1028 133244770929081
   -1  1029 460570771885530
   -1  1030 480973154594309
   -1  1031 417652389769225
   -1  1032 170548865161090
   -1  1033 515624422731095
   -1  1034 165972756145109
   -1  1035 542306944723980
   -1  1036 66902985421566
   -1  1037 244933604567638
   -1  1038 453185934572617
   -1  1039 182289902909798
   -1  1040 294691708180913
   -1  1041 189929847393492
   -1  1042 206309020304292
   -1  1043 230978465797902
   -1  1044 264548548339439
   -1  1045 220282262234399
   -1  1046 133399080217292
   -1  1047 272452537777430
   -1  1048 4820762140910
   -1  1049 507907208611956
   -1  1050 133076737025744
   -1  1051 218791065638686
   -1  1052 533774753154337
   -1  1053 101817003442537
   -1  1054 282198870041951
   -1  1055 145656659062223
   -1  1056 69252816875273
   -1  1057 28909793047633
   -1  1058 314124455110832
   -1  1059 14334258788038
   -1  1060 513118813436790
   -1  1061 529447919980973
   -1  1062 341304908857521
   -1  1063 486611300055896
   -1  1064 196824119405248
   -1  1065 555629082452287
   -1  1066 464993308257244
   -1  1067 531409552622214
   -1  1068 27470590937693
   -1  1069 362531155269426
   -1  1070 502364856738449
   -1  1071 462420761664644
   -1  1072 457041919062352
   -1  1073 140165729043596
   -1  1074 371944868714685
   -1  1075 352070378435237
   -1  1076 145660679286578
   -1  1077 160593750191825
   -1  1078 502158931065386
   -1  1079 414780361674848
   -1  1080 453240664106752
   -1  1081 64325751719911
   -1  1082 263265967873469
   -1  1083 511739075005634
   -1  1084 407125096237083
   -1  1085 497748985473791
   -1  1086 26921466064624
   -1  1087 539811080294247
   -1  1088 15497271904095
   -1  1089 190905003271198
   -1  1090 271200369318745
   -1  1091 491721533463817
   -1  1092 251174802123944
   -1  1093 400124171455131
   -1  1094 407898765662334
   -1  1095 382760013740103
   -1  1096 546174273703779
   -1  1097 444987098364853
   -1  1098 493462499886776
   -1  1099 449510601316005
   -1  1100 92163477433390
   -1  1101 278437175693806
   -1  1102 432407516652726
   -1  1103 438450665618924
   -1  1104 378591210228413
   -1  1105 364881500179804
   -1  1106 350085647159845
   -1  1107 104424214353896
   -1  1108 496639284671026
   -1  1109 105938626619655
   -1  1110 364161671705781
   -1  1111 436768810639154
   -1  1112 153044346111603
   -1  1113 266344667971095
   -1  1114 487682600405364
   -1  1115 72969067373830
   -1  1116 334095878455001
   -1  1117 89396239654237
   -1  1118 394121834856892
   -1  1119 201420749304124
   -1  1120 335036588174778
   -1  1121 547572682663447
   -1  1122 144458240733163
   -1  1123 23110041690873
   -1  1124 440419464063142
   -1  1125 145002468276690
   -1  1126 26533201500627
   -1  1127 227473825662020
   -1  1128 425453216140661
   -1  1129 310339672665035
   -1  1130 468648575466355
   -1  1131 310453931209582
   -1  1132 273547736929310
   -1  1133 151808148652043
   -1  1134 456053656519122
   -1  1135 299200299179301
   -1  1136 513365508986412
   -1  1137 423970063453378
   -1  1138 225045080240398
   -1  1139 406908767419756
   -1  1140 414282160871668
   -1  1141 333502352809846
   -1  1142 102716219357998
   -1  1143 323307060472361
   -1  1144 304481822172345
   -1  1145 544956230620481
   -1  1146 193303154717961
   -1  1147 423512997655876
   -1  1148 327941997098201
   -1  1149 520695905669097
   -1  1150 321784199673090
   -1  1151 515707811809394
   -1  1152 271230774697541
   -1  1153 245629408160907
   -1  1154 339400618689556
   -1  1155 334625783317833
   -1  1156 33991348836299
   -1  1157 250379765038742
   -1  1158 78356616365151
   -1  1159 529420550903809
   -1  1160 395719917896956
   -1  1161 14520578979257
   -1  1162 516523686975231
   -1  1163 110712731396128
   -1  1164 518729179665734
   -1  1165 171243630032588
   -1  1166 315839041190989
   -1  1167 430447709209175
   -1  1168 410823219695132
   -1  1169 61915664107843
   -1  1170 157596086240699
   -1  1171 37075657643
   -1  1172 47511153211467
   -1  1173 136449937661427
   -1  1174 483178260204664
   -1  1175 339050852626676
   -1  1176 56422227463451
   -1  1177 30160770257295
   -1  1178 217217099357482

diff --git a/2025/05/solution.zig b/2025/05/solution.zig

@@ -0,0 +1,82 @@
   -1     1 const std = @import("std");
   -1     2 
   -1     3 const Error = error{IndexError};
   -1     4 
   -1     5 fn splitOnce(s: []u8, sep: u8) ![2][]u8 {
   -1     6     const i = std.mem.indexOfScalar(u8, s, sep) orelse return Error.IndexError;
   -1     7     return .{ s[0..i], s[i + 1 ..] };
   -1     8 }
   -1     9 
   -1    10 fn intersect(range1: [2]usize, range2: [2]usize) bool {
   -1    11     return range1[1] >= range2[0] and range2[1] >= range1[0];
   -1    12 }
   -1    13 
   -1    14 fn insertRange(
   -1    15     allocator: std.mem.Allocator,
   -1    16     ranges: *std.array_list.Aligned([2]usize, null),
   -1    17     range: [2]usize,
   -1    18 ) !void {
   -1    19     const i: usize = for (ranges.items, 0..) |r, j| {
   -1    20         if (r[1] + 1 >= range[0]) {
   -1    21             break j;
   -1    22         }
   -1    23     } else ranges.items.len;
   -1    24     try ranges.insert(allocator, i, range);
   -1    25 
   -1    26     while (i + 1 < ranges.items.len and intersect(range, ranges.items[i + 1])) {
   -1    27         const start, const end = ranges.orderedRemove(i + 1);
   -1    28         ranges.items[i] = .{
   -1    29             @min(ranges.items[i][0], start),
   -1    30             @max(ranges.items[i][1], end),
   -1    31         };
   -1    32     }
   -1    33 }
   -1    34 
   -1    35 pub fn main() !void {
   -1    36     const allocator = std.heap.smp_allocator;
   -1    37 
   -1    38     const path: [:0]const u8 = std.mem.span(std.os.argv[1]);
   -1    39     var file = try std.fs.cwd().openFile(path, .{});
   -1    40     defer file.close();
   -1    41 
   -1    42     var buffer: [256]u8 = undefined;
   -1    43     var reader = file.reader(&buffer);
   -1    44 
   -1    45     var ranges = std.ArrayList([2]usize).empty;
   -1    46     defer ranges.deinit(allocator);
   -1    47 
   -1    48     while (reader.interface.takeDelimiterInclusive('\n')) |line| {
   -1    49         if (line.len == 1) {
   -1    50             break;
   -1    51         }
   -1    52 
   -1    53         const s1, const s2 = try splitOnce(line[0 .. line.len - 1], '-');
   -1    54         const start = try std.fmt.parseInt(usize, s1, 10);
   -1    55         const end = try std.fmt.parseInt(usize, s2, 10);
   -1    56 
   -1    57         try insertRange(allocator, &ranges, .{ start, end + 1 });
   -1    58         // std.debug.print("ranges: {any} {}\n", .{ranges, ranges.items.len});
   -1    59     } else |err| return err;
   -1    60 
   -1    61     var part1: usize = 0;
   -1    62     while (reader.interface.takeDelimiterInclusive('\n')) |line| {
   -1    63         const value = try std.fmt.parseInt(usize, line[0 .. line.len - 1], 10);
   -1    64 
   -1    65         for (ranges.items) |range| {
   -1    66             if (value >= range[0] and value < range[1]) {
   -1    67                 part1 += 1;
   -1    68                 break;
   -1    69             }
   -1    70         }
   -1    71     } else |err| switch (err) {
   -1    72         error.EndOfStream => {},
   -1    73         else => |e| return e,
   -1    74     }
   -1    75     std.debug.print("part1: {}\n", .{part1});
   -1    76 
   -1    77     var part2: usize = 0;
   -1    78     for (ranges.items) |range| {
   -1    79         part2 += range[1] - range[0];
   -1    80     }
   -1    81     std.debug.print("part2: {}\n", .{part2});
   -1    82 }

diff --git a/2025/05/test.txt b/2025/05/test.txt

@@ -0,0 +1,11 @@
   -1     1 3-5
   -1     2 10-14
   -1     3 16-20
   -1     4 12-18
   -1     5 
   -1     6 1
   -1     7 5
   -1     8 8
   -1     9 11
   -1    10 17
   -1    11 32