Advent of Code 2025 - Zig

Day 5

Changed files
+1277
inputs
src
+1188
inputs/day5.txt
··· 1 + 74889598306375-79559523144736 2 + 23847884851515-26063777298581 3 + 459936449883679-460281935061196 4 + 545695811978609-550366304549745 5 + 269527990632522-269945028746335 6 + 52542145987470-52542145987470 7 + 273110633492620-277105721993791 8 + 99226245783045-99371738264141 9 + 374951583052617-374951583052617 10 + 262023579067176-262675254937082 11 + 305591362690390-308549833234186 12 + 82652823861018-82652823861018 13 + 251950657574956-259887392284062 14 + 426017258068316-427958298472665 15 + 523534648927338-529180981385641 16 + 264959008015820-265735367299044 17 + 222376773933674-227770708606301 18 + 400512092626953-401890632610026 19 + 352311770735207-359414238172700 20 + 333688717400456-340405613250299 21 + 437019240719486-439402833548026 22 + 527092562011228-532043253244526 23 + 342398377522670-351448558631916 24 + 459284442765997-459767549156618 25 + 555666591387764-559196995081551 26 + 445635129234863-449206434197795 27 + 104742632902288-108456151380882 28 + 486936683064659-489793719367934 29 + 483401294663066-486936683064657 30 + 111131504257196-119314223294276 31 + 192217707764058-194249462841255 32 + 152542412311937-152542412311937 33 + 410195735957768-410961237535462 34 + 510864614478233-510864614478233 35 + 1725086974408-4674947171141 36 + 407943251943297-408791248752573 37 + 514768728274514-518320134249968 38 + 352311770735207-356182489432407 39 + 284156674778218-286083629847963 40 + 395362879313767-396732118247651 41 + 199280146173698-200618657181350 42 + 46260352873068-47885164713225 43 + 194514670399242-196188590161744 44 + 31845543953525-39662866201277 45 + 420816803348804-420816803348804 46 + 243459050537558-243459050537558 47 + 82652823861018-89744399134578 48 + 52542145987471-56718886376170 49 + 143074066748262-150192256362507 50 + 455946037419527-456538631967209 51 + 48362683356905-49772221084664 52 + 193309947601086-195025888420591 53 + 464377344898138-467090913854896 54 + 404992714738795-405533934296894 55 + 391336934620721-391336934620721 56 + 42870359530997-44424663926534 57 + 69239353265214-69239353265214 58 + 323286609420012-327570020897503 59 + 457368110531325-457749348540685 60 + 366177675277860-370540231905174 61 + 262675254937082-263504034398902 62 + 61596205240302-69239353265214 63 + 295720296715724-300542046913690 64 + 457368110531325-457571749135632 65 + 98704650973413-99371738264141 66 + 405533934296894-405762624506803 67 + 167134472908052-167985611468492 68 + 346606822382773-351448558631916 69 + 382529058990430-391336934620721 70 + 399437817124168-400959205952113 71 + 456538631967209-456928005074042 72 + 478828408554373-480355349773345 73 + 263242024963092-263937259638725 74 + 492809360807210-494748592737162 75 + 553971031209233-562668469713404 76 + 96611015315272-97445956091146 77 + 496710379259649-498551037908974 78 + 545695811978609-545695811978609 79 + 313811091610224-320919547902610 80 + 173868070074554-176589728790805 81 + 494045046230461-496039303951751 82 + 500203266743658-502208036779916 83 + 124139424755624-129841188406766 84 + 452932791437922-453307337989294 85 + 119314223294277-119314223294277 86 + 262023579067176-262189648814675 87 + 407943251943297-408507566260104 88 + 40499454165843-42353951060015 89 + 409063418440061-409812352602173 90 + 99952814763659-100056213702826 91 + 97867489804299-98190930500181 92 + 267798658217408-268465485882652 93 + 98903776347733-99226245783045 94 + 392265619122335-393938447521681 95 + 31845543953525-35368129711400 96 + 498956072992090-500877971484824 97 + 261456991003298-261799419139686 98 + 150192256362507-150192256362507 99 + 541992002580805-541992002580805 100 + 98903776347733-99371738264141 101 + 408507566260104-409245214597176 102 + 265315310082828-265488184749660 103 + 262023579067176-262567907546600 104 + 393302087448366-394887747369031 105 + 460281935061196-460769747344763 106 + 374951583052617-379631331873305 107 + 13449776908338-17647218540771 108 + 95951220808570-96384239222742 109 + 198192283542096-199682437936682 110 + 269126435468584-269280617538565 111 + 131683853648211-140073228721597 112 + 435205877780561-437019240719485 113 + 173868070074554-178593201312903 114 + 266233250142694-266988040203737 115 + 402974843625693-403261146828303 116 + 44749609982898-46467592204076 117 + 136309772739012-140073228721597 118 + 152542412311938-158129794518855 119 + 464377344898138-471098541087893 120 + 454493733599256-454945412013225 121 + 406975766736538-407453438188871 122 + 217373831665498-218764099619920 123 + 410075582063499-410576372509974 124 + 305591362690390-308549833234186 125 + 460769747344763-460979652114697 126 + 456928005074042-457368110531325 127 + 495490712582377-497184240370882 128 + 203353257515922-206995711218753 129 + 452662947889223-453307337989294 130 + 409245214597176-410075582063499 131 + 21281719145212-29461042500436 132 + 473824309898264-480355349773345 133 + 459630581183475-459936449883679 134 + 410961237535462-411281888012925 135 + 235064187073078-239746783395880 136 + 46970106550375-48679186185299 137 + 504627639656299-510864614478233 138 + 206995711218754-210401847604210 139 + 453512846391372-453952362230473 140 + 254876062984423-257097125130819 141 + 396379947271805-397846727638156 142 + 122506952022586-126258255019363 143 + 286083629847964-290200989953183 144 + 514768728274513-514768728274513 145 + 397364121060177-398907008750174 146 + 191186839436490-192786667703686 147 + 213618967821287-217373831665496 148 + 404839885331583-405533934296894 149 + 410576372509974-410692115085683 150 + 93620627683853-93871840848933 151 + 97445956091146-98190930500181 152 + 195774648677933-197516289194107 153 + 197055281231222-198362088431227 154 + 182720818560544-187301677330220 155 + 4674947171142-8700720898079 156 + 533834274871010-541992002580804 157 + 313811091610223-313811091610223 158 + 410961237535462-411827536271406 159 + 456720730464466-457368110531325 160 + 239746783395881-239746783395881 161 + 497774899702742-500012881001943 162 + 275245086049008-281166045317238 163 + 264959008015820-265735367299044 164 + 73050487240215-74889598306373 165 + 243459050537558-248654988639021 166 + 426017258068316-427958298472665 167 + 394481105634933-395874104406883 168 + 93150966904813-93620627683853 169 + 455313396927797-455850586073077 170 + 162707238999678-167985611468492 171 + 13449776908338-17647218540771 172 + 182720818560544-187301677330220 173 + 398429972215735-399914592704971 174 + 407680028035540-408507566260104 175 + 335524852113386-337312412933214 176 + 264959008015820-265488184749660 177 + 95951220808570-96384239222742 178 + 261799419139686-262567907546600 179 + 92132565696665-92283993119003 180 + 327570020897505-331097913750044 181 + 415055259717418-420816803348803 182 + 41463756158179-43315740257493 183 + 456720730464466-457571749135632 184 + 455850586073077-456181678272920 185 + 43619628533047-45384139349382 186 + 362380049910825-367267049622454 187 + 458502597573756-459117229622451 188 + 189 + 267703200553763 190 + 314245513301228 191 + 476669940887631 192 + 68686981025899 193 + 288791850269680 194 + 281914876554026 195 + 486761581187065 196 + 333997925976156 197 + 537586117345062 198 + 112907923188286 199 + 166812428559392 200 + 284004949332581 201 + 562115670229032 202 + 549026638282552 203 + 437576476020553 204 + 14566907141898 205 + 46708181890450 206 + 62313440981967 207 + 127778677675833 208 + 330504750042287 209 + 510633366982448 210 + 541159770543027 211 + 132463454639608 212 + 408048385933909 213 + 19534901703219 214 + 167114919798553 215 + 278527915757402 216 + 102815478610376 217 + 150266176348267 218 + 530354406858497 219 + 453042756287736 220 + 48887154128461 221 + 365344811369461 222 + 12126751275995 223 + 123993004151835 224 + 344629680425481 225 + 550899643954680 226 + 146340981547307 227 + 454786973542684 228 + 501010736140301 229 + 289056969634721 230 + 397587872146276 231 + 2174113488242 232 + 208667122296511 233 + 182888350269357 234 + 470017389043963 235 + 174518916295537 236 + 214552545899840 237 + 262782697922098 238 + 134788867765933 239 + 367085974260636 240 + 554409438853802 241 + 420948933837777 242 + 455522571390322 243 + 124831505380245 244 + 155740997113385 245 + 274010224305989 246 + 83370536371642 247 + 543572315919977 248 + 329052723048827 249 + 518139367819196 250 + 462416272445712 251 + 332345131870882 252 + 393186021434820 253 + 419671803355776 254 + 115382824273406 255 + 470282020510768 256 + 185141420454036 257 + 42734359180863 258 + 167282907500231 259 + 73353898280494 260 + 6648095822369 261 + 32048561201262 262 + 288434047549766 263 + 480181909326150 264 + 146913110778668 265 + 515426427788552 266 + 284388591874454 267 + 447956707600792 268 + 89252787353972 269 + 96558814797775 270 + 62878896205573 271 + 326202594058535 272 + 426098559981298 273 + 219695052754663 274 + 390765585983920 275 + 549378613500346 276 + 70263847891740 277 + 517008251309114 278 + 328392291885067 279 + 562518908022957 280 + 420587076835439 281 + 275191197082879 282 + 325767490265087 283 + 392508621207176 284 + 85541093459 285 + 501070386333897 286 + 161353190070398 287 + 448958147870071 288 + 185720958343758 289 + 559038391297690 290 + 328146398661322 291 + 126854650446469 292 + 153427740939119 293 + 386359655344879 294 + 349262115858680 295 + 87721260957105 296 + 439177663744208 297 + 326923812493117 298 + 236648510210453 299 + 203584285187206 300 + 101624973720898 301 + 139686835596394 302 + 385642194351273 303 + 355771581327109 304 + 507031725620620 305 + 524495752783631 306 + 183099410056715 307 + 84666652432595 308 + 351111847252926 309 + 262147501693130 310 + 164427427374203 311 + 385281049138642 312 + 289597306490642 313 + 76340021958996 314 + 257435260207122 315 + 430582357248138 316 + 509982781152513 317 + 277279155207789 318 + 346236778269562 319 + 132684349312958 320 + 183934240303173 321 + 145081289643067 322 + 132132700045925 323 + 5627230448821 324 + 48473306319385 325 + 381141606675121 326 + 420214692698453 327 + 214698997495007 328 + 323592366982384 329 + 168732626366616 330 + 439425803820215 331 + 63544202540563 332 + 138242089047145 333 + 375811194676740 334 + 559140756424209 335 + 101185865779466 336 + 117258746004261 337 + 115284002169991 338 + 365179366412947 339 + 409031671045823 340 + 448091877001324 341 + 557347354586119 342 + 476950836524672 343 + 276154040742885 344 + 455402167884596 345 + 392634529426562 346 + 52549162117863 347 + 139303835304998 348 + 376761760358087 349 + 79314432493330 350 + 393942914626979 351 + 416955689060131 352 + 343218174705566 353 + 380739544437102 354 + 104891885244850 355 + 401670250654630 356 + 88458875946998 357 + 298440458431810 358 + 279287931153785 359 + 489659112268894 360 + 389525783453513 361 + 167889475738004 362 + 410476752564180 363 + 531188923681915 364 + 496070313575527 365 + 148844162663222 366 + 375565285223057 367 + 454869552496741 368 + 16079160074520 369 + 529141968466117 370 + 456309789996017 371 + 355982125422812 372 + 77665783303807 373 + 255415068574128 374 + 419645033859422 375 + 535899565802189 376 + 427026443808551 377 + 304886104235610 378 + 63813191429013 379 + 337592273757387 380 + 316191629977335 381 + 427932266762721 382 + 275051062030262 383 + 287389427660196 384 + 85342152945868 385 + 25120229452331 386 + 207959510733908 387 + 526251060504047 388 + 539965694955807 389 + 137117157822118 390 + 550219108879217 391 + 74742361465476 392 + 446933750202615 393 + 472645873461808 394 + 531905907514767 395 + 527634360277461 396 + 226525561218664 397 + 5513011599653 398 + 319497976104713 399 + 162104761227436 400 + 324339976537342 401 + 395254176289838 402 + 160885730404142 403 + 116775894531633 404 + 548355761034347 405 + 77883725691152 406 + 509378022740168 407 + 143110701934829 408 + 248400739956879 409 + 252816632851765 410 + 124248090164812 411 + 273043580096539 412 + 77248846910575 413 + 108095175460213 414 + 200419577876467 415 + 455439545179548 416 + 255143892965194 417 + 79337431949450 418 + 499486550932403 419 + 151920401525733 420 + 246347931210030 421 + 398264348868158 422 + 356921403632712 423 + 416976978713778 424 + 62550101642256 425 + 539162094904846 426 + 241300223504305 427 + 371234617293083 428 + 377480005378126 429 + 256728882359867 430 + 473817607951163 431 + 404805849509856 432 + 255589957262174 433 + 536003397737518 434 + 409504280780088 435 + 462604266879479 436 + 455610146686064 437 + 139022013893693 438 + 541640250917889 439 + 34135586860392 440 + 528884695574852 441 + 448466312091769 442 + 26127983295753 443 + 158632248635959 444 + 540362092137539 445 + 166361533681704 446 + 347986482489603 447 + 511380069678311 448 + 262607239672299 449 + 456154003553896 450 + 102886612270602 451 + 298852335978173 452 + 397987908749462 453 + 226618499080577 454 + 460049908642141 455 + 174148765268093 456 + 277248892168313 457 + 206195430127836 458 + 346220042130757 459 + 377427157138049 460 + 293683918180939 461 + 510607102677907 462 + 121887407146502 463 + 371302495035340 464 + 192159441360045 465 + 432710956811031 466 + 397908280539056 467 + 521437239297124 468 + 545963436163520 469 + 515805480403501 470 + 206647433890373 471 + 477935784578574 472 + 384122562791212 473 + 237504309474062 474 + 239387803646296 475 + 385616465642634 476 + 121347156729217 477 + 501205030915983 478 + 4164713007124 479 + 144278073591748 480 + 476803224950481 481 + 191571866883374 482 + 197642063769214 483 + 217708004782296 484 + 301280748245662 485 + 79073881133065 486 + 119107650596178 487 + 335138707204953 488 + 452784722707600 489 + 337506667457484 490 + 113724494802352 491 + 254858332488566 492 + 387683614033850 493 + 426292386956773 494 + 214463745624483 495 + 299540905586858 496 + 350550197742116 497 + 536405029293329 498 + 494775402599482 499 + 2582560119292 500 + 89877881326870 501 + 400097828536482 502 + 184830838090784 503 + 176336002630858 504 + 67461897507623 505 + 478995461021135 506 + 66212052730031 507 + 328039865962058 508 + 326092476168529 509 + 25274780856063 510 + 352789983272670 511 + 276431320475127 512 + 133999347173556 513 + 111279717488096 514 + 343266002684336 515 + 474028558955039 516 + 174619394455543 517 + 162732324430877 518 + 113448726562399 519 + 259456334175541 520 + 537017932790511 521 + 256853952618920 522 + 150111292636639 523 + 277526884477793 524 + 510559701678610 525 + 249878769050331 526 + 385842702926764 527 + 15186474043730 528 + 156884477804410 529 + 275247335709306 530 + 416740982448921 531 + 300462543096595 532 + 278531216467315 533 + 16332494626990 534 + 282875090733536 535 + 5872643715074 536 + 300042207849628 537 + 456104839840493 538 + 287174965481715 539 + 207117476286466 540 + 394987711786195 541 + 400207956239096 542 + 387260891911120 543 + 524592377138341 544 + 415784639512725 545 + 410596586356053 546 + 248405579939633 547 + 338855127817907 548 + 146033129177226 549 + 517742414815392 550 + 471230574297887 551 + 546712543433971 552 + 538391752986732 553 + 186906067746185 554 + 22509342552195 555 + 85625730211494 556 + 538910150773912 557 + 132420618246240 558 + 284414081405754 559 + 255891448972987 560 + 196857919027085 561 + 138738791817002 562 + 485493440771638 563 + 147747408894904 564 + 33245855503122 565 + 421102519976991 566 + 108184025390613 567 + 131789306489093 568 + 343148913656154 569 + 314062251052588 570 + 23891222108866 571 + 294396601766718 572 + 136961347844318 573 + 385797126658710 574 + 36852707675320 575 + 155408024053040 576 + 562391020571128 577 + 318250946457455 578 + 484794697907639 579 + 269127810495416 580 + 24673202576945 581 + 401486731731305 582 + 166990997418947 583 + 48645416709342 584 + 240560106665056 585 + 407276162339995 586 + 242965253828537 587 + 176797321556635 588 + 208847827219988 589 + 135565798765472 590 + 326859246103528 591 + 135198931577480 592 + 410885360168920 593 + 555348188358315 594 + 64233815465165 595 + 307676899028702 596 + 168160314639706 597 + 113660045194141 598 + 3128220114794 599 + 420257558459001 600 + 395295630150417 601 + 454636247945816 602 + 3912100568058 603 + 494987442103801 604 + 335326780570776 605 + 75802547174538 606 + 378193105275106 607 + 138945925852743 608 + 384233285798074 609 + 400365114660432 610 + 65737092191342 611 + 286757515297424 612 + 232114444758437 613 + 289104482288261 614 + 223453260053196 615 + 506228647097813 616 + 559481202416651 617 + 137336699186386 618 + 380487096861383 619 + 118245803037563 620 + 122415671398605 621 + 395932516015848 622 + 167790904763894 623 + 65069567652510 624 + 315128784107527 625 + 67125705937428 626 + 103603394318896 627 + 35385192134369 628 + 530173165429241 629 + 61725685300127 630 + 322602007668223 631 + 439387247925334 632 + 503418099642988 633 + 484067158942713 634 + 531849439905068 635 + 224459007739261 636 + 24378087402780 637 + 2090476358503 638 + 383461739326334 639 + 476060700905306 640 + 505276675340888 641 + 236031974956105 642 + 377951917531087 643 + 305903237010845 644 + 334278173181544 645 + 96194049575420 646 + 107191325459762 647 + 257553430116094 648 + 184960433166364 649 + 128404000675271 650 + 54087565604499 651 + 296324196697139 652 + 485118648856374 653 + 407718809040549 654 + 114039487816787 655 + 409597366793132 656 + 405161536291390 657 + 475151482301763 658 + 185757824602754 659 + 527831890043980 660 + 508515681994562 661 + 302259042109687 662 + 479888176285502 663 + 37430750914659 664 + 495167532286372 665 + 2245085885737 666 + 191980106108419 667 + 106185415623900 668 + 90785673324634 669 + 385723748232181 670 + 377401924893285 671 + 370806548023962 672 + 328904038345546 673 + 289101637320534 674 + 48387659479037 675 + 438413210453605 676 + 138031258795004 677 + 36848011421152 678 + 251975389894768 679 + 430485690000143 680 + 370022736362871 681 + 54325220063190 682 + 93315079111354 683 + 234792194674992 684 + 299181675379516 685 + 199867118084202 686 + 447200493402353 687 + 55093856317585 688 + 455429252586707 689 + 13982586844900 690 + 81913111360659 691 + 287572871184619 692 + 506866685578822 693 + 247684641487649 694 + 417035324377295 695 + 338068029231776 696 + 185739412688546 697 + 558172813082916 698 + 241288155016777 699 + 286910058459724 700 + 86362733475456 701 + 135487703859586 702 + 549534590875975 703 + 252344411558105 704 + 251457584553746 705 + 109015390838264 706 + 398033365679282 707 + 369972994863616 708 + 390451769918555 709 + 266647736384980 710 + 385957200620673 711 + 543364449059874 712 + 454726294169283 713 + 13913836326415 714 + 226211403507929 715 + 224941477401670 716 + 456832903203951 717 + 191797765138125 718 + 524061239673962 719 + 375982974685691 720 + 536150717345034 721 + 293616346522039 722 + 126501835719822 723 + 279884390123033 724 + 350827911840968 725 + 557928976098849 726 + 341417081837800 727 + 284436254344417 728 + 479366194607605 729 + 163235426756573 730 + 314272700526518 731 + 205048888497471 732 + 256187819498826 733 + 546762427419358 734 + 487593130608709 735 + 363195648042915 736 + 531786619046694 737 + 357724622349762 738 + 505159674786341 739 + 386031269423540 740 + 167135877727039 741 + 148805569159387 742 + 66651488174771 743 + 348938161012725 744 + 78798843584284 745 + 177370666445446 746 + 253022239408246 747 + 516459668991453 748 + 95954548928192 749 + 138731604119786 750 + 242916105575718 751 + 509267655662974 752 + 164008930892787 753 + 106317666384571 754 + 409990481363994 755 + 154290711081875 756 + 201821843876119 757 + 88332126514130 758 + 237295909029197 759 + 467793554347828 760 + 45462740864705 761 + 268342166705726 762 + 529361112647572 763 + 36811532703769 764 + 552473505016593 765 + 397401572712223 766 + 206517687660965 767 + 34739741517387 768 + 485853082904292 769 + 329515805678682 770 + 250068097201362 771 + 5811305089566 772 + 60724160854507 773 + 186356501715046 774 + 42837916522207 775 + 555239978784550 776 + 47823342086949 777 + 320101501978074 778 + 43822102671002 779 + 521057735127340 780 + 108850874680057 781 + 522590519745349 782 + 524831363124357 783 + 253262685355816 784 + 449003256981423 785 + 41701122847104 786 + 269402097973798 787 + 541460349412143 788 + 509958043383506 789 + 7492668588823 790 + 90419359720951 791 + 196346261986016 792 + 208655722081067 793 + 554810298887769 794 + 513936709731233 795 + 181884588463345 796 + 541323800446004 797 + 362502397813743 798 + 338532779807647 799 + 393781827440381 800 + 484231163934835 801 + 37368887642636 802 + 558795326921854 803 + 552195424786532 804 + 487686086722100 805 + 134352870412141 806 + 10548867200531 807 + 60122626473134 808 + 3489391142590 809 + 216173153241746 810 + 214521290960992 811 + 44663209553865 812 + 496592595794476 813 + 417402679166151 814 + 389296175879080 815 + 73443182146421 816 + 484184471167513 817 + 87648380690651 818 + 76411099990958 819 + 376672915838595 820 + 416662481674533 821 + 418842094034787 822 + 177174243842776 823 + 360917121735286 824 + 37441255895228 825 + 264108716674645 826 + 299362787720432 827 + 505099464111505 828 + 364159003514922 829 + 413516151514861 830 + 548892821365930 831 + 327323809169901 832 + 53168968429945 833 + 210203102429476 834 + 105658860188691 835 + 508939674970622 836 + 245680776161395 837 + 288072594863946 838 + 546066920142152 839 + 408984495717515 840 + 88204503487301 841 + 420219365055917 842 + 437310420649854 843 + 84872120349774 844 + 194751885779582 845 + 208701305452937 846 + 351563087499086 847 + 450129679644429 848 + 148666187688590 849 + 239236123519534 850 + 113251449388132 851 + 446206949516497 852 + 246000641386074 853 + 252689833153796 854 + 435334860574873 855 + 341717773220089 856 + 64549016645535 857 + 213699870249320 858 + 298451558239307 859 + 185278005691907 860 + 8134577132657 861 + 261966279442499 862 + 315840584607737 863 + 353094021415400 864 + 330463604552237 865 + 396511234431585 866 + 351811096797895 867 + 24116628523626 868 + 327266253863210 869 + 524772929314460 870 + 286262429143047 871 + 112044214186910 872 + 497421176479944 873 + 209963628211988 874 + 364921149568555 875 + 222616259826373 876 + 167494081960892 877 + 499698833223075 878 + 380451940256767 879 + 376298943098954 880 + 208462778895259 881 + 257822644313233 882 + 458960916901113 883 + 500268391272039 884 + 138998774243410 885 + 286056250666152 886 + 14226665041036 887 + 554490653927807 888 + 205493591904944 889 + 311093374336015 890 + 136566800754788 891 + 218133725663833 892 + 274814661165851 893 + 534750291151638 894 + 214709273517981 895 + 79281401204290 896 + 224764905953198 897 + 322817916117121 898 + 548877324865482 899 + 206660505085085 900 + 495570162464287 901 + 537221325061609 902 + 277228017007164 903 + 509785550628771 904 + 79038292162381 905 + 149362868524492 906 + 50267611008838 907 + 117076334817031 908 + 396942178239874 909 + 483805769198573 910 + 110075887030993 911 + 398662759960312 912 + 513825778885855 913 + 372385946611796 914 + 126762615156838 915 + 501602330801394 916 + 148063225053668 917 + 427379720548000 918 + 538338046892758 919 + 286349639477622 920 + 517525189535154 921 + 323949348355715 922 + 485239694769451 923 + 66347360844789 924 + 75709762798959 925 + 286275492542680 926 + 466563938524428 927 + 491060402282968 928 + 114180510960550 929 + 24220681424443 930 + 401529619714595 931 + 350999068436663 932 + 73666255044195 933 + 315283280221678 934 + 486567916582595 935 + 386988771968788 936 + 547091287233054 937 + 199251969596551 938 + 262367207773360 939 + 147700215775683 940 + 323559607834129 941 + 343865160780162 942 + 352839210417144 943 + 286789170597857 944 + 144046104082154 945 + 297615167536211 946 + 204569901882174 947 + 244464598977365 948 + 440172658100605 949 + 49393055561078 950 + 440441952930071 951 + 62529050272603 952 + 213465906163506 953 + 431116933276249 954 + 388099250625889 955 + 440313935879579 956 + 485454470084470 957 + 515122155140488 958 + 352527058113869 959 + 539626852470189 960 + 308549434850357 961 + 271630505884632 962 + 79091553688646 963 + 204467863152245 964 + 507389383841226 965 + 150081616230541 966 + 48614681735400 967 + 38494761645721 968 + 400962294931237 969 + 196541694588791 970 + 509404781754297 971 + 22613353976910 972 + 359141441034099 973 + 347125970907508 974 + 88112667765826 975 + 375234617586179 976 + 541561456822743 977 + 43487805824682 978 + 245580139924720 979 + 61925346936953 980 + 524104340406426 981 + 257313383539798 982 + 257467918677062 983 + 118564317819358 984 + 392750785087973 985 + 263279929238613 986 + 266743143547903 987 + 28887057819205 988 + 560448405152026 989 + 475670452878736 990 + 68976100885144 991 + 119371715353960 992 + 416764485629505 993 + 117454786396455 994 + 28107867060982 995 + 181617471419198 996 + 324286432815230 997 + 376470658175284 998 + 554862101454165 999 + 528158502920611 1000 + 281947519810737 1001 + 502628687780946 1002 + 554328274194757 1003 + 427533335712174 1004 + 15753321044802 1005 + 396204966666336 1006 + 165759879810321 1007 + 483836196305874 1008 + 236642041182378 1009 + 28707001290911 1010 + 453941000159908 1011 + 239378018801579 1012 + 295395596552203 1013 + 129744526281154 1014 + 509996132214665 1015 + 18817467919836 1016 + 69011914271435 1017 + 528770649907953 1018 + 464924927383704 1019 + 111167850070594 1020 + 499398260633297 1021 + 203338517303186 1022 + 271121505006292 1023 + 530430854732561 1024 + 253618104548448 1025 + 367185126207437 1026 + 275919660389158 1027 + 87873304408612 1028 + 543450629096424 1029 + 335477470153767 1030 + 531185565092995 1031 + 353467590596917 1032 + 539558595034365 1033 + 225598648475121 1034 + 4266598824125 1035 + 191304659850847 1036 + 453551208518017 1037 + 357295063001348 1038 + 263186304559599 1039 + 300999306013676 1040 + 77019074405259 1041 + 226263109115314 1042 + 248493294223107 1043 + 76051058021610 1044 + 281446420791413 1045 + 165573379200741 1046 + 208551587249223 1047 + 167271839095269 1048 + 383400878284206 1049 + 298337501656080 1050 + 124172939953146 1051 + 555516114071984 1052 + 495886062434862 1053 + 370105294988027 1054 + 117518571341234 1055 + 535396467789758 1056 + 462531694761674 1057 + 501182977540792 1058 + 204496381162149 1059 + 25969155651589 1060 + 467727993347850 1061 + 353565855652763 1062 + 107307789527891 1063 + 191835803404538 1064 + 436143175338541 1065 + 246324312888904 1066 + 27569427736847 1067 + 26574523143644 1068 + 139788807089135 1069 + 176401248007787 1070 + 224258345415143 1071 + 528751806467589 1072 + 452711776828434 1073 + 3422299653756 1074 + 155986186068180 1075 + 410378589362967 1076 + 415145311387608 1077 + 179958057198998 1078 + 267710841876153 1079 + 496649721067563 1080 + 6017796745068 1081 + 298191870572960 1082 + 393165757002946 1083 + 65769991202474 1084 + 253237962273185 1085 + 209146854330194 1086 + 107757689277939 1087 + 443902289475155 1088 + 327302234127556 1089 + 379337635400148 1090 + 122249492301373 1091 + 517281519310874 1092 + 408584526628391 1093 + 453273285660630 1094 + 115058082240098 1095 + 265469790821220 1096 + 198447908303968 1097 + 93868274574192 1098 + 503279938554547 1099 + 268867654076452 1100 + 453784106826062 1101 + 175503260355149 1102 + 84101857588793 1103 + 324115653720005 1104 + 467419147023362 1105 + 51418409329448 1106 + 72864581581592 1107 + 104393802122250 1108 + 160012575558600 1109 + 338831657068830 1110 + 357455127413667 1111 + 143756694868069 1112 + 215217688048563 1113 + 537027874668719 1114 + 73932131117673 1115 + 74181200853882 1116 + 554540963128042 1117 + 486317747175726 1118 + 127243450453974 1119 + 204813394215205 1120 + 507073368512394 1121 + 113200659469356 1122 + 166888784896861 1123 + 253884791723332 1124 + 313515157965308 1125 + 326221984355446 1126 + 436287539073725 1127 + 560950751003125 1128 + 416839043124797 1129 + 124348810428443 1130 + 274103286464266 1131 + 118685215448145 1132 + 548999961779691 1133 + 457117834790631 1134 + 167566351250786 1135 + 363140782790450 1136 + 291713213362971 1137 + 102909906319888 1138 + 507891379594132 1139 + 524090581833788 1140 + 431695964171760 1141 + 528260720020178 1142 + 215538497228820 1143 + 265015077579563 1144 + 339652161321033 1145 + 516261525562674 1146 + 437570091922631 1147 + 490514737665222 1148 + 39629294184591 1149 + 132080844454118 1150 + 87126816519167 1151 + 357542868502579 1152 + 83614098374336 1153 + 556110799346171 1154 + 547616707073349 1155 + 47428347578027 1156 + 339955543030250 1157 + 466654836920333 1158 + 540612031208814 1159 + 75068256263748 1160 + 253332988043717 1161 + 516559830977242 1162 + 103091334549787 1163 + 1857237753590 1164 + 48231689767618 1165 + 460056775695850 1166 + 505801010046218 1167 + 476826442637823 1168 + 506362177553486 1169 + 143364931880380 1170 + 276066489933080 1171 + 338528060828864 1172 + 464816954524112 1173 + 469791767111983 1174 + 455523496219358 1175 + 297177825168277 1176 + 546323555093840 1177 + 176252665665347 1178 + 185104463289193 1179 + 535349486532929 1180 + 393353469154641 1181 + 63080739338750 1182 + 297406102825472 1183 + 248597051099131 1184 + 441114193997943 1185 + 448757303674787 1186 + 78008363064472 1187 + 471216568470612 1188 + 506677522986754
+11
inputs/day5test.txt
··· 1 + 3-5 2 + 10-14 3 + 16-20 4 + 12-18 5 + 6 + 1 7 + 5 8 + 8 9 + 11 10 + 17 11 + 32
+76
src/day5.zig
··· 1 + const std = @import("std"); 2 + const Allocator = std.mem.Allocator; 3 + const ArrayList = std.ArrayList; 4 + 5 + const Range = struct { 6 + low: usize, 7 + high: usize, 8 + 9 + pub fn compareByLow(_: void, a: Range, b: Range) bool { 10 + return a.low < b.low; 11 + } 12 + }; 13 + 14 + pub fn run(allocator: Allocator, input: []u8) !void { 15 + var sections = std.mem.tokenizeSequence(u8, input, "\n\n"); 16 + 17 + var answer1: u64 = 0; 18 + var answer2: u64 = 0; 19 + 20 + var ranges = std.mem.tokenizeScalar(u8, sections.next().?, '\n'); 21 + var items = std.mem.tokenizeScalar(u8, sections.next().?, '\n'); 22 + 23 + var valid_ranges = try ArrayList(Range).initCapacity(allocator, 100); 24 + defer valid_ranges.deinit(allocator); 25 + 26 + var max: u64 = 0; 27 + 28 + while (ranges.next()) |line| { 29 + var range = std.mem.tokenizeScalar(u8, line, '-'); 30 + 31 + const low = try std.fmt.parseInt(u64, range.next().?, 10); 32 + const high = try std.fmt.parseInt(u64, range.next().?, 10); 33 + 34 + if (high > max) { 35 + max = high; 36 + } 37 + 38 + try valid_ranges.append(allocator, .{ .low = low, .high = high }); 39 + } 40 + 41 + while (items.next()) |line| { 42 + const id = try std.fmt.parseInt(usize, line, 10); 43 + 44 + for (valid_ranges.items) |range| { 45 + if (range.low <= id and id <= range.high) { 46 + answer1 += 1; 47 + break; 48 + } 49 + } 50 + } 51 + 52 + std.mem.sort(Range, valid_ranges.items, {}, Range.compareByLow); 53 + 54 + var merged_ranges = try ArrayList(Range).initCapacity(allocator, valid_ranges.items.len); 55 + defer merged_ranges.deinit(allocator); 56 + for (valid_ranges.items[0 .. valid_ranges.items.len - 1], 0..) |item, i| { 57 + var other = &valid_ranges.items[i + 1]; 58 + if (item.high < other.low) { 59 + try merged_ranges.append(allocator, item); 60 + continue; 61 + } 62 + 63 + other.low = item.low; 64 + if (other.high < item.high) { 65 + other.high = item.high; 66 + } 67 + } 68 + try merged_ranges.append(allocator, valid_ranges.getLast()); 69 + 70 + for (merged_ranges.items) |item| { 71 + answer2 += item.high - item.low + 1; 72 + } 73 + 74 + std.debug.print("Answer P1: {d}\n", .{answer1}); 75 + std.debug.print("Answer P2: {d}\n", .{answer2}); 76 + }
+2
src/main.zig
··· 3 3 const day2 = @import("./day2.zig"); 4 4 const day3 = @import("./day3.zig"); 5 5 const day4 = @import("./day4.zig"); 6 + const day5 = @import("./day5.zig"); 6 7 7 8 pub fn main() !void { 8 9 var args = std.process.args(); ··· 37 38 2 => try day2.run(input_content), 38 39 3 => try day3.run(input_content), 39 40 4 => try day4.run(input_content), 41 + 5 => try day5.run(allocator, input_content), 40 42 else => {}, 41 43 } 42 44 }