Advent of Code 2025 - Zig

Compare changes

Choose any two refs to compare.

+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
+5
inputs/day6.txt
··· 1 + 49 9493 847 816 6 7131 86 51 323 87 9 71 1789 356 163 7 94 88 3751 314 916 1 42 57 1 234 6 734 762 92 74 18 1 17 417 16 53 733 691 735 141 2584 32 42 42 86 53 6657 812 64 261 583 39 44 325 36 413 77 6792 99 478 68 88 654 134 9 834 7516 2457 9 86 793 974 871 4 646 345 45 465 988 74 1 58 73 2 83 617 5144 66 71 37 85 53 44 2474 314 3 558 3 5636 32 93 86 68 3 3 79 8 1 49 3 22 171 76 56 45 12 9 858 27 494 816 98 71 289 98 244 9326 75 6 4 6 64 66 492 385 4 6219 6 19 6 25 4169 383 58 46 65 276 33 5839 569 79 74 6526 98 85 996 587 46 133 17 92 86 3737 473 455 552 5 953 11 93 84 873 342 72 693 69 5318 96 24 9173 4414 73 5 82 927 2 84 28 9 67 7 63 42 971 735 2 731 48 529 741 71 99 65 784 135 84 77 83 349 428 41 635 78 44 5 319 4 262 9 548 788 294 94 5966 6 366 1925 19 76 83 237 462 3275 2 35 1331 4 75 34 69 64 455 781 26 5439 68 65 379 14 56 87 79 32 55 353 813 9974 283 64 6 64 1876 47 9 17 14 17 86 9 927 6 53 534 277 7426 8534 2 176 57 52 41 39 66 465 7 56 55 9444 93 751 51 9931 253 792 698 49 98 35 17 129 45 2145 5 29 7 31 515 237 62 36 39 7 473 212 41 73 254 94 7151 64 93 29 5 868 3 5 62 8 913 16 8 13 9 86 49 5 78 57 98 7 35 9 45 34 5 41 49 18 64 347 439 9 72 99 83 922 37 945 6938 26 35 563 37 8 7243 819 2 181 77 51 7598 82 3 986 93 496 91 77 92 6757 32 21 868 6 21 9 15 2244 396 44 827 383 91 92 949 89 12 6 8765 624 4125 6995 85 5 59 76 211 29 25 96 85 8683 77 8 72 33 2789 368 265 8943 5394 7 8 136 19 9929 75 61 491 43 781 914 36 1284 32 3 18 235 589 386 4273 91 7 55 643 8 26 72 9 1 5 94 66 5 5 283 4 61 47 347 8 96 938 2926 2 47 8 64 648 215 28 5464 6 8 8 666 9 541 9315 47 5 45 782 61 141 124 571 99 33 26 8 625 5 8 57 5 844 14 93 5853 11 87 897 9367 82 17 143 5 84 2 24 93 929 21 18 3 379 78 2 464 3 871 815 46 297 91 9 1164 14 95 424 2 19 874 9695 11 715 512 281 58 598 3615 9 94 993 66 16 2 2 17 331 63 916 172 24 3 4423 78 8 48 252 835 21 4876 74 369 4 961 94 35 198 58 6 91 9498 13 4 748 89 448 192 548 589 85 38 8 45 85 612 65 21 55 626 45 251 347 2573 74 21 43 8 361 966 1391 81 18 29 61 1 2 46 59 898 3121 972 6257 484 15 926 37 7 697 7143 1 38 81 351 98 45 462 3193 822 49 82 6 331 52 84 674 51 1376 4 15 76 7 845 69 461 994 2568 643 7 916 691 3162 8 57 85 59 22 8 86 715 28 4 86 41 43 666 9 731 713 9452 27 98 858 434 3268 42 7 847 84 8 79 59 825 56 59 88 32 526 29 5 6749 9 945 82 9 95 7 61 66 2988 67 14 53 73 736 841 538 768 816 538 66 8 11 24 876 4 76 87 57 244 51 6 43 776 9 5 67 69 9 235 23 924 952 42 3273 1341 5 53 1599 46 53 64 86 73 459 146 363 466 4 9 777 1 17 958 885 123 93 8 84 64 46 8378 272 917 99 1 2355 1 978 11 16 9223 3 93 656 3234 26 89 3 1711 281 795 832 62 44 81 413 49 59 8 81 98 286 63 7 47 32 333 1 29 1543 81 465 18 582 7 2 33 398 7 632 6 75 8634 97 54 287 27 41 5 829 19 37 34 18 47 74 37 79 95 4 34 682 5357 48 818 166 41 1 122 58 982 2 75 25 776 446 1 97 91 57 294 79 49 49 14 35 28 58 57 1 15 96 268 5 8 16 97 24 62 84 6382 565 62 7 31 56 95 45 51 19 77 8 55 239 9 2 2 37 51 91 12 68 78 9437 78 3 33 22 3 9 92 2751 7462 6 5298 85 7495 796 8 76 36 921 2 45 195 44 288 42 784 17 24 8 894 619 2276 4 8849 572 19 33 4 165 27 67 519 3365 8 18 35 7 9342 4 74 25 15 6878 5 8 46 26 114 87 83 73 2 45 99 593 6 68 788 3464 815 5325 5 7279 98 47 24 97 92 7339 6 72 44 924 6 1 22 871 69 9 45 923 868 499 9 4 34 92 8 233 479 24 52 2 + 83 9643 262 113 91 3284 778 71 966 43 91 33 7759 156 265 25 54 79 4869 691 537 57 9341 35 25 242 2 269 956 118 27 23 1 82 698 15 15 652 1446 367 776 6562 54 19 98 89 25 8683 767 29 553 626 65 39 436 53 615 81 2956 44 546 547 55 4511 555 687 915 6713 6749 27 431 245 24 935 99 783 629 17 626 674 11 38 999 44 22 81 196 7938 51 55 54 46 84 83 7591 553 9 199 4 5294 75 68 93 15 61 28 582 78 95 81 5 46 91 67 71 87 96 67 383 88 731 471 33 59 766 38 927 5321 26 2 2 2 75 57 825 529 887 8711 66 73 8 85 1268 534 24 97 44 954 39 571 541 26 49 845 85 34 869 479 69 717 26 78 31 665 668 558 94 95 317 11 39 13 249 675 74 278 65 12 85 41 321 4787 91 2 34 611 42 71 24 892 38 5 36 69 579 872 19 288 88 874 113 79 87 78 831 568 27 21 58 621 435 39 534 55 16 91 112 5 984 346 182 642 877 155 7673 18 523 494 61 23 96 925 437 8675 655 7658 8946 57 77 934 21 26 882 331 98 3858 691 91 587 621 3591 445 69 45 77 871 882 6713 942 43 56 88 5784 21 82 5183 95 12 72 869 162 22 55 698 72 261 7696 38 155 1 74 34 88 53 63 5 99 937 1834 616 943 372 326 885 344 951 136 41 93 16 774 74 893 8 25 46 166 667 358 61 328 292 16 719 599 23 63 958 22 1136 652 28 36 6 941 88 1 87 52 785 51 14 76 2 324 46 21 98 12 312 75 28 2 696 47 4 53 77 62 56 569 354 6 81 11 62 276 5 125 7492 36 63 232 33 22 6868 446 41 19 74 3464 6226 723 9 2989 32 2561 98 96 835 5984 53 67 636 74 466 74 18 3835 997 65 122 74 66 8554 583 93 599 98 9284 871 4862 4159 43 44 25 31 796 98 35 191 21 9238 41 37 27 23 6245 132 933 7352 3527 5 727 89 15 2218 534 99 953 54 192 755 84 9455 34 55 68 744 984 473 285 26 7 83 664 44 71 1353 72 85 82 98 26 74 3 223 57 58 232 288 9 99 72 773 928 65 3 98 432 1121 24 6275 57 779 44 818 65 99 9413 66 9 47 568 19 386 654 796 86 57 58 27 364 642 2 59 416 496 47 61 1419 76 64 284 5426 27 23 547 25 488 72 97 2183 221 59 14 7 788 76 45 854 283 58 252 33 446 884 85 7287 18 85 886 3 93 79 9117 73 692 794 977 67 739 6671 784 657 899 4 32 63 757 47 911 48 329 634 77 12 6878 5868 58 483 719 17 31 2296 68 84 54 673 41 385 883 33 6 54 82 994 63 876 569 481 753 896 985 11 76 29 84 93 991 234 94 88 915 59 8889 298 5969 49 837 89 72 739 235 568 227 91 89 36 82 45 23 93 296 6225 143 885 446 946 238 81 6 215 8857 1 76 12 21 58 77 19 4193 782 81 74 48 342 6 46 661 85 3698 5 71 33 44 93 264 132 258 7798 451 5 757 881 2545 1 97 94 497 427 35 24 667 723 57 33 19 26 319 24 651 39 5255 9689 56 5239 789 5533 78 41 573 82 46 176 46 746 862 56 82 51 143 44 15 8641 9 635 66 68 235 4 47 19 5863 98 37 29 92 6863 953 293 481 312 639 97 8 95 75 881 35 82 52 842 582 42 52 94 231 32 7 47 12 99 12 79 256 614 2 5231 4367 8 225 5843 79 18 98 47 38 786 322 452 139 6 8 521 6 22 637 364 196 21 5 523 84 635 7486 316 197 72 865 8186 89 344 92 98 7982 87 96 622 7772 74 48 55 226 177 433 823 8679 16 774 328 29 354 7 67 261 899 5478 88 665 96 236 431 2 8555 139 629 31 787 7 44 54 775 4474 739 78 96 455 83 68 343 99 7 58 388 65 18 9 52 76 12 77 691 41 5 42 278 1391 85 343 233 29 22 531 134 779 19 4 18 161 259 676 64 271 42 544 741 52 61 632 28 154 65 325 18 41 75 414 31 8 519 79 42 957 27 5192 917 77 94 86 61 53 97 81 78 42 36 55 82 89 34 7542 57 34 62 65 44 47 1455 14 79 2 82 22 1 97 1432 515 2 8486 46 5644 556 67 71 962 674 67 58 231 13 794 27 439 69 25 4 456 415 297 69 4251 83 25 88 3 973 959 16 943 1289 39 66 39 93 777 768 511 847 6 3859 1 23 85 411 326 56 43 78 95 31 215 881 69 76 468 1663 424 642 14 177 64 46 78 42 29 9132 3 81 2 629 19 4 95 676 87 8 46 679 18 767 17 74 52 666 9 851 516 26 36 3 + 16 959 5389 422 48 7167 663 8 722 14 26 85 8579 924 6241 48 31 94 1794 54 693 67 5158 5 14 428 5 56 924 251 31 99 4 13 925 769 7 693 4785 993 73 279 25 28 189 962 56 7533 748 48 299 752 44 89 272 32 41 56 5597 48 89 753 67 7348 28 664 927 918 1 7578 1553 316 89 973 762 24 61 31 361 198 77 92 525 4 48 41 729 8579 72 95 2974 83 9 622 8773 62 54 925 28 4544 128 62 74 5 976 79 785 932 36 41 8 54 3 64 6 57 46 58 868 49 91 457 7 22 122 21 429 782 4796 55 87 37 79 779 673 331 841 2286 39 32 95 18 5696 46 5781 68 39 865 59 26 975 29 11 85 94 81 381 71 63 722 37 295 36 969 62 321 27 48 33 55 94 1 335 695 21 8 98 38 34 28 21 9987 86 748 38 825 27 22 86 166 9 39 36 14 531 596 71 23 23 21 894 91 77 83 398 172 8 21 435 87 481 46 25 85 5545 57 489 43 535 582 883 447 95 548 2325 43 763 129 67 36 2 132 369 175 267 7141 69 166 1 9526 85 55 536 94 19 9144 377 7 838 788 1552 818 67 52 23 52 12 3535 43 78 725 84 7563 2 276 8861 17 777 198 2817 545 79 19 9965 37 9 3746 36 975 2 4 2 28 61 96 6 17 915 98 392 88 314 647 289 65 41 232 7 18 81 112 69 81 49 88 545 842 657 11 76 612 321 17 29 249 18 468 912 96 4656 971 63 29 92 646 24 8 236 98 875 72 44 9 55 683 6 353 54 85 891 235 7938 3 542 68 67 18 98 85 92 432 54 137 41 48 29 24 1 122 7866 41 47 35 7 54 163 96 83 35 117 2365 8961 791 53 6847 68 2271 6 45 4872 9232 49 27 273 81 927 44 6448 541 561 369 441 18 4 1164 393 6 871 344 56 427 7185 8111 1 16 91 36 546 73 93 179 69 3567 84 66 96 93 1218 637 613 9426 796 97 2132 99 42 9764 786 21 65 52 764 9274 23 882 65 614 664 454 35 83 337 25 47 25 245 667 21 6687 48 615 349 83 99 6873 32 155 84 3 1191 44 2 66 71 866 849 67 67 53 692 9933 17 4371 47 482 94 77 68 12 421 41 27 16 93 5 79 772 16 46 618 14 37 728 342 6145 83 438 278 34 44 293 58 72 95 15 96 314 97 87 1542 82 36 9554 863 41 36 14 447 279 962 958 356 3 636 2 48 7865 558 55 77 87 452 13 66 75 825 37 797 644 9359 65 942 8986 783 298 666 2 17 24 194 986 994 5 588 24 13 95 619 8933 27 957 65 85 64 8746 58 14 16 726 81 541 597 69 9 6 64 8475 831 267 5191 94 866 69 32 52 97 789 92 86 351 697 54 71 124 46 3485 298 964 42 949 84 38 161 19 484 185 47 23 97 84 355 1 34 5773 62 49 393 77 728 38 11 42 648 471 6 99 52 86 76 883 64 446 751 82 77 947 379 8 68 235 36 1913 88 28 28 69 67 851 9527 21 4313 34 23 952 153 14 21 52 71 574 2343 19 51 88 631 97 97 45 74 139 9686 564 1 768 8916 24 3665 382 4416 82 136 382 17 899 928 38 437 5262 96 48 47 335 791 693 2182 2 331 23 91 353 97 1 97 1328 65 96 55 8 4687 983 354 621 14 813 35 17 41 897 949 74 25 56 687 213 6179 67 94 269 92 7 56 118 77 54 49 787 98 4 242 8479 19 122 319 39 41 78 87 231 592 568 363 615 62 17 25 6 74 885 594 148 9 13 313 76 191 277 892 96 89 196 176 494 618 278 67 66 226 1 174 271 18 8 42 89 53 33 446 3623 91 4656 873 33 826 12 39 254 622 5238 441 891 2 814 845 4 6697 256 469 92 53 25 87 86 569 9549 312 792 2 515 356 87 666 285 8 64 927 7 32 6 39 12 497 52 367 72 84 53 228 692 84 18 838 48 73 268 125 69 869 3 3 916 564 439 5 959 23 281 283 37 555 144 51 499 93 431 271 34 73 426 123 37 4365 26 14 167 58 9727 856 34 91 54 62 97 692 11 42 32 169 66 44 29 43 9583 486 15 88 6 38 938 537 1 83 2 69 943 4 55 948 646 72 324 769 2444 166 45 976 757 998 96 77 3 76 18 33 731 86 38 51 58 133 473 98 466 86 91 46 87 575 548 278 583 532 195 279 55 82 159 355 354 459 4 866 14 562 35 456 633 87 19 94 85 95 2836 686 21 32 886 693 714 655 68 855 6 66 593 95 61 654 4 84 2 96 82 91 94 531 26 4 327 79 96 741 33 581 14 279 68 543 632 79 57 4 + 83 5 2222 2 47 518 117 3 9 96 87 28 1732 92 4877 81 71 65 4 8 528 66 5889 8 57 793 56 4 5 821 183 25 35 34 996 451 7 3 8336 326 37 13 6 27 719 863 7 817 86 56 77 92 86 7 65 41 2 67 711 1 76 635 6 6363 4 469 847 83 7 4168 4219 485 9 736 919 93 12 5 517 773 34 72 533 6 34 52 85 76 7 73 9559 4 7 694 35 78 28 9213 38 23 554 44 6 4 376 68 372 118 35 98 13 638 8 51 8 54 34 86 915 15 25 373 4 8 359 91 8583 14 4463 16 79 54 36 314 29 842 8229 1 233 64 12 56 9494 9 8724 24 1 698 8 76 836 83 4 97 46 1 758 2 1 148 6 652 7 915 15 2 74 17 7 5 78 5 4 31 29 6 11 8 54 21 75 35 11 773 9 164 94 14 59 947 1 96 9 89 258 863 87 9 47 11 275 57 63 14 379 52 8 96 273 1 9 882 8 35 9624 26 485 68 889 486 464 823 5 687 87 41 374 88 67 467 7 892 87 76 298 6368 3 399 7 2815 65 42 8 42 71 989 266 1 34 125 3961 788 576 593 12 3 74 2684 7 34 642 97 94 3 686 8742 23 922 532 9954 6 751 68 8887 77 4 995 31 41 5 7 9 3 92 58 71 2 255 5 564 3 523 57 765 3 9 763 4 5 77 976 59 33 68 73 741 921 746 41 53 726 522 61 85 24 39 159 78 24 9871 533 38 51 76 9 36 68 651 82 78 99 84 2 99 137 3 769 88 4 988 668 6663 96 552 61 77 83 69 52 93 625 7 549 3 11 66 63 8 175 9 72 6 1 8 18 5 5 79 47 649 8416 661 622 53 1225 72 6986 3 24 8259 8585 6 4 19 82 827 36 4449 94 811 262 818 13 9 9759 57 7 444 947 32 94 146 192 3 776 54 85 7 91 43 729 26 81 68 25 389 52 2 66 331 944 34 47 3695 6 5 756 591 95 1 91 294 5551 47 46 18 277 891 334 4 28 332 53 18 83 4 353 78 1259 59 897 118 745 2 5824 48 9654 38 2 7523 13 91 17 47 89 198 31 27 38 123 4573 29 9331 276 8546 12 2 91 79 48 1 64 73 74 4 4 78 83 2112 458 76 32 847 285 1154 13 522 96 21 85 46 5 726 4 45 89 141 18 82 6148 63 2 1367 967 31 84 55 493 127 472 669 626 7 17 5 75 9283 577 7 42 52 1 22 75 1 727 66 62 353 4621 34 337 713 431 251 95 1 78 66 511 555 169 2 467 78 19 31 53 1664 28 447 66 43 6 33 2 54 19 983 66 7969 96 8 33 7 93 8465 831 912 4218 2 854 48 32 53 746 358 27 22 9842 563 11 42 86 1 1358 424 8 4 858 73 44 45 91 25 836 28 99 7 93 284 5 5 3725 87 15 63 55 474 1 29 91 69 4 56 35 79 92 79 233 5 49 36 81 27 129 19 2 15 944 78 782 19 4 3 38 8 4192 3997 7 927 8 13 539 19 78 19 88 65 218 6271 32 2 54 777 51 14 37 14 25 6275 23 1 9 7836 24 6159 91 5729 3 474 88 4 419 646 22 4 9738 3 1 28 628 858 5226 36 38 46 25 97 7529 42 4 5994 7767 9 84 71 8 1679 71 893 31 55 158 27 18 7 689 57 45 45 6 259 14 3141 19 5 9 83 49 98 346 79 27 55 84 8 7 41 6332 91 338 726 38 8 5 42 821 249 6 415 363 52 46 14 76 4 1 99 7435 4 63 3487 23 859 45 3376 8 92 781 541 993 571 492 4 89 279 9 9 715 3 3 94 2 98 23 383 4173 71 6897 622 8 511 31 55 781 113 7761 965 664 5 22 538 4 274 285 635 31 67 53 32 78 59 4319 936 258 9 45 676 99 641 258 7 97 949 8 52 1 41 2 751 1 866 5 96 857 22 12 15 3 845 46 43 698 862 9 869 9 3 141 49 975 6 422 56 557 834 94 9728 644 85 955 9 755 297 72 8 729 871 52 1861 58 17 639 61 284 22 83 52 71 3 14 136 65 26 4 568 8 8 92 52 7419 183 47 2 8 52 736 15 2 88 6 88 493 12 61 31 41 97 8 651 86 4 88 658 367 262 59 64 5 4 2 84 999 52 89 48 19 83 324 38 3 1 47 9 98 8 275 9763 914 662 915 5395 51 93 36 298 284 625 1 943 562 521 22 845 411 6 13 9 58 63 4555 35 644 99 225 12 113 18 94 88 1 7 251 52 98 448 55 59 6 48 53 456 52 493 79 75 857 33 75 68 61 358 17 8381 34 782 91 37 43 5 + * + + * * + * * * * * * + * + + * * + * + * + * * + * + * * * * * * + * * * + + * + * + + * + + * * * * * * * * * * + + * + * + + * * + + + + * * + * + + + + + + + + + + + + + + * + * * * + * * + * + * + * + * * * + * * * + + * * + * + * * + * + + * * + + + + * * * * * * + + * * + * + + + + * * + + + + * + + * * * * * + * * + + * * * + * + * * * * * * + + * + + * + * + * + * * * * + + * * * * * * * * * * + * * + + + + * + + + + * * * + + + * + + + * + + * + + * + * + + + + + * * + * * + * + * * + + * + * * * + * + + * + + * + + + + + + * + + * + + + * + + * + * + * * + + + + * + + + * + + * + + + + * + * + * * * + + * + + + * * * + + + + * * * + * + * + + + * * * + * * * * + + + * + + * + + * + + * * * + * * + * * * + * + + + * * + + * * + * + + * + + + * * * * * + + + * * * * + + * * * + * + + + + * + * + + * * + + + * * + * + + + * + + * + * * * * * + + + * * + + * * + + + + + * * + + * * * * + * + + * + + * + * + * + * * * + + + * + + * + * + * * * + * * + * + + * * * + + + * * * * + * * + + * + + + + * * + + * + + * + + + * * + * * + * + * + * * + + + * + * + * * + * + + * + + + + * * * * * * + + + * * + + + * * * + + + * + * + + + + * + + * * + + + * * * + * * * + * + + + * + * + * + + + + * + + + * * + + * + * * + * + + + + + * * + * * + + + * * * + + + * + + + * * * + + + + * * * * + * + * * + + * + + + * * * * + + * + + * + + + + * * * * * + * + * + * * * + + * * * * + * * + + * * * * + * * + * * * * + * + + * + * * + + * + * + + + * * * * + * + + * * + * * * + + * + * + + * * * * + * + + + + * * + + * * * + * * * * + + * + + * * * + * + + + * + + * + + * + * + * * * + * + + * + + * * + * * + * * + + + * + + * * * + + * + * * + * * + + * + + * * * + * * * * * * + * * * * * + * * + * * * * * * + * * * * + * + * * + + * + * + + * * + * * + * * + + * * + * * + + + * * * * + * + + + + + + + + * * + * * + * + * + * + * * * + * + + * + * + * + * + * + * * + * + * + + * + * * + * + + * * + + + + * + + + + + * * + * + + * * * * + * + + * * * * + * * + + + * * * * +
+4
inputs/day6test.txt
··· 1 + 123 328 51 64 2 + 45 64 387 23 3 + 6 98 215 314 4 + * + * +
+7 -7
src/day1.zig
··· 1 1 const std = @import("std"); 2 + const Allocator = std.mem.Allocator; 2 3 3 - pub fn run(input: []u8) !void { 4 + pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } { 4 5 var lines = std.mem.tokenizeScalar(u8, input, '\n'); 5 6 6 7 var dial: u8 = 50; 7 - var zeroes_p1: u64 = 0; 8 - var zeroes_p2: u64 = 0; 8 + var answer1: u64 = 0; 9 + var answer2: u64 = 0; 9 10 while (lines.next()) |line| { 10 11 const direction: i2 = switch (line[0]) { 11 12 'L' => -1, ··· 24 25 dial = @intCast(@mod(new_rotation, 100)); 25 26 26 27 if (dial == 0) { 27 - zeroes_p1 += 1; 28 + answer1 += 1; 28 29 } 29 30 30 - zeroes_p2 += zeroes_clicked; 31 + answer2 += zeroes_clicked; 31 32 } 32 33 33 - std.debug.print("Answer P1: {d}\n", .{zeroes_p1}); 34 - std.debug.print("Answer P2: {d}\n", .{zeroes_p2}); 34 + return .{ answer1, answer2 }; 35 35 }
+3 -3
src/day2.zig
··· 1 1 const std = @import("std"); 2 + const Allocator = std.mem.Allocator; 2 3 3 - pub fn run(input: []u8) !void { 4 + pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } { 4 5 var ranges = std.mem.tokenizeScalar(u8, std.mem.trimEnd(u8, input, "\n"), ','); 5 6 6 7 var answer1: u64 = 0; ··· 48 49 } 49 50 } 50 51 51 - std.debug.print("Answer P1: {d}\n", .{answer1}); 52 - std.debug.print("Answer P2: {d}\n", .{answer2}); 52 + return .{ answer1, answer2 }; 53 53 }
+3 -3
src/day3.zig
··· 1 1 const std = @import("std"); 2 + const Allocator = std.mem.Allocator; 2 3 3 - pub fn run(input: []u8) !void { 4 + pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } { 4 5 var lines = std.mem.tokenizeScalar(u8, input, '\n'); 5 6 6 7 var answer1: u64 = 0; ··· 10 11 answer2 += try calculateJoltage(line, 12); 11 12 } 12 13 13 - std.debug.print("Answer P1: {d}\n", .{answer1}); 14 - std.debug.print("Answer P2: {d}\n", .{answer2}); 14 + return .{ answer1, answer2 }; 15 15 } 16 16 17 17 fn calculateJoltage(line: []const u8, num_digits: usize) !u64 {
+3 -3
src/day4.zig
··· 1 1 const std = @import("std"); 2 + const Allocator = std.mem.Allocator; 2 3 const StringTokenIterator = std.mem.TokenIterator(u8, .scalar); 3 4 4 5 const MAX_WIDTH = 137; ··· 32 33 return .{ .data = grid, .maxX = line_len, .maxY = i }; 33 34 } 34 35 35 - pub fn run(input: []u8) !void { 36 + pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } { 36 37 var lines = std.mem.tokenizeScalar(u8, input, '\n'); 37 38 38 39 const grid = try newGrid(&lines); ··· 95 96 } 96 97 } 97 98 98 - std.debug.print("Answer P1: {d}\n", .{answer1}); 99 - std.debug.print("Answer P2: {d}\n", .{answer2}); 99 + return .{ answer1, answer2 }; 100 100 }
+75
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) !struct { u64, u64 } { 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 + return .{ answer1, answer2 }; 75 + }
+91
src/day6.zig
··· 1 + const std = @import("std"); 2 + const Allocator = std.mem.Allocator; 3 + const TokenIterator = std.mem.TokenIterator; 4 + 5 + const NUM_LINES = 5; 6 + 7 + pub fn run(_: Allocator, input: []u8) !struct { u64, u64 } { 8 + return .{ try part1(input), try part2(input) }; 9 + } 10 + 11 + fn part1(input: []u8) !u64 { 12 + const NUM_OPERANDS = NUM_LINES - 1; 13 + 14 + var lines = std.mem.tokenizeScalar(u8, input, '\n'); 15 + 16 + var operand_strings: [NUM_OPERANDS]TokenIterator(u8, .any) = undefined; 17 + 18 + for (0..NUM_OPERANDS) |i| { 19 + operand_strings[i] = std.mem.tokenizeAny(u8, lines.next().?, " "); 20 + } 21 + var operator: TokenIterator(u8, .any) = std.mem.tokenizeAny(u8, lines.next().?, " "); 22 + 23 + var answer1: u64 = 0; 24 + while (operator.next()) |op| { 25 + var operands: [NUM_OPERANDS]u64 = undefined; 26 + for (0..NUM_OPERANDS) |i| { 27 + operands[i] = try std.fmt.parseInt(u64, operand_strings[i].next().?, 10); 28 + } 29 + 30 + answer1 += switch (op[0]) { 31 + '+' => blk: { 32 + var result: u64 = 0; 33 + for (operands) |o| result += o; 34 + break :blk result; 35 + }, 36 + '*' => blk: { 37 + var result: u64 = 1; 38 + for (operands) |o| result *= o; 39 + break :blk result; 40 + }, 41 + else => unreachable, 42 + }; 43 + } 44 + 45 + return answer1; 46 + } 47 + 48 + fn part2(input: []u8) !u64 { 49 + const NUM_OPERAND_LINES = NUM_LINES - 1; 50 + 51 + var lines = std.mem.tokenizeScalar(u8, input, '\n'); 52 + 53 + var operand_lines: [NUM_OPERAND_LINES][]const u8 = undefined; 54 + for (0..NUM_OPERAND_LINES) |i| { 55 + operand_lines[i] = lines.next().?; 56 + } 57 + const operator = lines.next().?; 58 + 59 + var answer2: u64 = 0; 60 + 61 + var current_operator: u8 = undefined; 62 + var result: u64 = 0; 63 + for (0..operator.len) |i| { 64 + if (operator[i] != ' ') { 65 + answer2 += result; 66 + current_operator = operator[i]; 67 + result = switch (current_operator) { 68 + '+' => 0, 69 + '*' => 1, 70 + else => unreachable, 71 + }; 72 + } 73 + 74 + var operand_str: [NUM_OPERAND_LINES]u8 = undefined; 75 + for (0..NUM_OPERAND_LINES) |j| { 76 + operand_str[j] = operand_lines[j][i]; 77 + } 78 + 79 + const operand = std.fmt.parseUnsigned(u64, std.mem.trim(u8, operand_str[0..], " "), 10) catch continue; 80 + 81 + switch (current_operator) { 82 + '+' => result += operand, 83 + '*' => result *= operand, 84 + else => unreachable, 85 + } 86 + } 87 + 88 + answer2 += result; 89 + 90 + return answer2; 91 + }
+20 -12
src/main.zig
··· 1 1 const std = @import("std"); 2 - const day1 = @import("./day1.zig"); 3 - const day2 = @import("./day2.zig"); 4 - const day3 = @import("./day3.zig"); 5 - const day4 = @import("./day4.zig"); 2 + const days = .{ 3 + @import("./day1.zig"), 4 + @import("./day2.zig"), 5 + @import("./day3.zig"), 6 + @import("./day4.zig"), 7 + @import("./day5.zig"), 8 + @import("./day6.zig"), 9 + }; 6 10 7 11 pub fn main() !void { 8 12 var args = std.process.args(); ··· 18 22 var gpa: std.heap.GeneralPurposeAllocator(.{}) = .init; 19 23 const allocator = gpa.allocator(); 20 24 21 - const day = try std.fmt.parseInt(u4, day_str, 10); 25 + const day_num = try std.fmt.parseInt(u4, day_str, 10); 22 26 23 - const input_path = try std.fmt.allocPrint(allocator, "inputs/day{d}{s}.txt", .{ day, test_str }); 27 + const input_path = try std.fmt.allocPrint(allocator, "inputs/day{d}{s}.txt", .{ day_num, test_str }); 24 28 defer allocator.free(input_path); 25 29 26 30 const input_file = try std.fs.cwd().openFile(input_path, .{}); ··· 32 36 const input_content = try reader.interface.allocRemaining(allocator, .unlimited); 33 37 defer allocator.free(input_content); 34 38 35 - switch (day) { 36 - 1 => try day1.run(input_content), 37 - 2 => try day2.run(input_content), 38 - 3 => try day3.run(input_content), 39 - 4 => try day4.run(input_content), 40 - else => {}, 39 + inline for (days, 1..) |day, i| { 40 + if (i == day_num) { 41 + std.debug.print("Day {d}\n\n", .{i}); 42 + 43 + const answer1, const answer2 = try day.run(allocator, input_content); 44 + 45 + std.debug.print("Answer P1: {d}\n", .{answer1}); 46 + std.debug.print("Answer P2: {d}\n", .{answer2}); 47 + break; 48 + } 41 49 } 42 50 }