advent2024

Advent of Code 2024
git clone git://bsandro.tech/advent2024
Log | Files | Refs

commit c8d4c877cd92d2461176ffc8fd1498ab6fa3523e
parent b6f9dc14bb9a6f80e9af14d20cc68fe3a0208b6c
Author: bsandro <email@bsandro.tech>
Date:   Sat,  7 Dec 2024 16:55:10 +0200

Day 07 p1

Diffstat:
Aday07/Makefile | 28++++++++++++++++++++++++++++
Aday07/input.txt | 850+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aday07/main.cpp | 106+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aday07/test1.txt | 9+++++++++
Mtpl/Makefile | 2+-
Mtpl/main.cpp | 4++--
6 files changed, 996 insertions(+), 3 deletions(-)

diff --git a/day07/Makefile b/day07/Makefile @@ -0,0 +1,28 @@ +NAME=$(shell basename ${PWD}) +SRC=$(wildcard *.cpp) +DEPS:=$(wildcard *.hpp) +OBJ:=$(SRC:.cpp=.o) +CXXFLAGS=-O2 -std=c++23 -Werror -Wall -Wextra -I. +LDFLAGS=-lstdc++ + +all: $(NAME) + +.PHONY: clean run + +clean: + rm -f $(OBJ) $(NAME) + +%.o : %.c $(DEPS) + @$(CC) $(CFLAGS) -c $< -o $@ + +$(NAME): $(OBJ) + @$(CC) $(OBJ) -o $@ $(LDFLAGS) + +run: $(NAME) + @./$(NAME) input.txt + +test1: $(NAME) + @./$(NAME) test1.txt + +test2: $(NAME) + @./$(NAME) test2.txt diff --git a/day07/input.txt b/day07/input.txt @@ -0,0 +1,850 @@ +64288413730: 91 79 4 9 7 8 91 7 30 +230456169: 3 630 12 7 2 1 6 26 3 69 +376955: 7 96 4 914 387 +2102493: 259 8 30 467 9 17 +144043977: 96 25 7 5 1 3 4 5 5 67 3 1 +691452935348: 864 3 16 1 3 8 25 6 348 +3472782: 119 2 384 5 687 +1627001896: 535 1 6 328 3 2 962 4 3 +24644441: 9 5 56 38 35 96 99 569 +48356500: 63 602 3 2 85 5 +21099440: 2 8 7 9 71 83 440 +93442: 33 6 342 7 76 +966401: 96 478 157 5 4 +9016: 88 5 2 3 215 +5278335745: 6 15 86 3 71 1 1 7 88 2 8 +30296778: 64 4 1 6 4 6 9 67 1 6 6 +660549: 14 902 720 42 2 985 +10997299576145: 143 1 94 96 47 8 1 45 +2708767806: 79 774 50 443 3 2 +3826013465684: 8 6 5 88 43 738 65 684 +4370535: 1 9 9 1 308 5 7 921 1 5 5 +268284: 1 4 3 3 3 1 8 38 9 73 3 9 +4932942: 7 908 9 775 67 +57820: 77 3 28 58 121 59 +3213956: 22 633 142 66 3 +2106786228: 220 14 15 1 31 6 22 8 +1810433087: 596 3 4 57 24 74 +6192: 616 412 4 6 +1880: 6 1 6 37 66 2 16 8 +64433821: 60 11 432 38 21 +9206506: 9 92 8 2 3 3 473 3 1 8 1 9 +44815741: 70 25 70 912 3 9 1 60 +116899244: 656 450 36 4 11 +4120: 2 3 8 55 40 +97844: 38 3 638 35 800 8 9 61 +92605659: 4 3 51 4 13 119 5 1 3 5 9 +17907621655925: 78 542 2 228 55 925 +29841: 6 13 136 835 819 25 7 +550207121: 5 6 5 69 3 32 3 5 54 6 6 5 +1493: 6 738 748 1 +2531: 42 6 45 6 749 +5186366: 96 1 6 36 73 1 605 53 +65402895: 6 4 465 3 8 1 5 8 2 7 6 46 +42965118: 9 9 41 9 3 3 137 266 +133: 22 5 8 8 7 +17145528694: 285 754 31 450 6 9 4 +3359666: 101 63 528 +34122760: 4 5 771 5 603 878 6 7 4 +25640341: 94 4 5 5 26 34 200 4 5 +953673600: 9 7 477 9 1 1 6 821 44 8 +44639873: 6 8 50 860 3 811 +384480771: 7 3 6 8 982 6 1 2 5 5 1 9 +1029304074: 35 8 1 7 58 15 1 358 16 +1069598: 70 6 40 28 5 1 +544501335: 825 660 884 449 2 +199: 2 50 5 2 85 +813270371: 951 6 2 37 1 4 955 6 8 3 +110505: 9 24 8 7 3 2 647 6 92 5 8 +93698167500: 90 8 7 95 71 9 375 6 1 +86663168: 5 8 1 74 376 548 9 8 +2025036: 4 3 3 302 45 6 2 6 9 2 2 1 +109466571: 1 89 99 23 175 39 3 4 +5435280217: 258 8 914 81 276 73 +2949251510726: 511 135 443 4 4 577 +2911041: 5 4 7 287 49 +1344423: 6 7 1 444 23 +10156: 9 2 9 39 24 841 6 64 36 +21047040974: 3 4 977 15 810 2 97 5 +179010: 4 5 99 9 90 +294720251715: 545 778 3 4 2 925 2 5 9 +38167353884: 6 731 4 9 5 7 9 83 2 50 +9184176: 481 265 93 72 +115752: 62 6 1 1 80 152 191 6 +284935: 5 92 95 366 381 5 +111632278: 3 582 111 576 22 +56679084: 4 8 1 7 2 3 9 9 322 7 22 +150495424: 5 95 678 5 8 3 2 6 4 8 2 +36540188532: 522 350 94 2 485 47 +25: 1 4 5 +3198840: 135 389 20 8 5 61 +103529984: 6 85 9 565 4 3 5 458 4 +3281192: 1 11 709 298 4 +73545: 77 106 9 9 6 +19570215631: 389 1 582 5 479 6 4 6 7 +983910880: 8 81 83 7 1 39 3 469 1 +16811480: 1 1 7 1 5 3 2 8 6 807 4 14 +480000: 57 85 99 4 341 +65771773: 657 714 3 67 6 +14979801: 27 121 1 7 97 9 2 5 7 4 +1433829668360: 738 9 477 5 503 4 5 2 4 +4071566: 610 2 47 6 71 +48492: 8 6 49 2 +61054: 52 3 3 37 4 +798452: 798 4 52 +606: 6 3 6 6 6 +492637266: 792 3 138 4 6 59 1 3 22 +1944701: 6 4 81 181 520 +13560759004: 802 32 5 4 177 169 91 +11301208011: 7 6 28 8 68 4 97 8 953 1 +524: 4 9 49 69 4 +2213964: 7 188 308 7 53 +80428411552896: 837 795 953 676 96 +3517087665: 96 62 5 2 2 7 9 52 65 +14515851: 85 43 6 3 900 2 42 49 7 +1257: 518 591 71 12 52 9 4 +235514545: 707 1 2 231 7 9 4 8 6 5 +2901484800000: 9 49 965 2 90 60 64 75 +441929: 7 63 44 41 4 75 +85354: 34 3 3 5 3 3 9 2 2 41 3 7 +3003221: 7 5 5 44 30 17 13 +32642292: 32 64 22 83 9 +20541967333: 681 6 798 63 12 97 33 +983147880: 73 14 94 22 65 +6386: 59 91 53 3 961 +10692: 2 2 2 1 8 40 86 7 9 3 66 +98520: 1 691 7 123 30 4 +383636: 7 854 5 8 6 5 3 18 8 4 3 8 +151: 9 6 55 +20328035: 18 37 40 42 220 33 2 +41345871: 4 8 9 4 78 4 850 1 3 7 1 +536775818: 4 3 9 7 6 143 5 46 871 8 +510055797: 9 46 3 539 9 4 +153188743707: 8 25 940 184 6 28 6 27 +182784192: 8 34 64 5 3 7 8 1 6 2 5 43 +161232: 3 2 643 7 7 5 99 +67454: 3 32 8 395 58 +1876: 74 1 3 19 90 304 +203352531293: 78 2 76 376 91 93 +6161474: 9 64 6 635 145 7 5 40 3 +635921842: 2 420 13 7 922 401 1 2 +8645243696: 7 489 589 4 4 8 8 134 1 +2317257234: 1 48 586 9 2 3 83 3 9 6 9 +45236: 12 92 2 10 43 +2880974425: 576 5 747 227 425 +333711769248: 243 800 917 34 6 312 +6188793: 2 192 156 526 201 +382518336: 6 4 890 724 9 5 552 8 +35700: 8 7 98 649 508 5 4 7 +762848067: 2 7 6 7 13 1 9 2 2 8 2 371 +1484000000: 5 625 29 2 7 80 250 7 8 +78746499: 11 663 50 83 81 +15876: 7 56 21 +1617961092: 5 603 440 672 9 132 +1019335531: 6 78 642 39 876 5 10 3 +58975970: 88 2 53 10 338 7 730 1 +99268075559: 262 934 830 755 59 +65373960: 4 7 8 749 6 9 6 7 670 7 1 +24640094683: 412 380 286 311 83 +12459: 59 246 9 101 3 3 +224960: 4 499 2 5 +63304966848: 5 5 55 6 42 2 69 5 68 4 8 +18180610: 12 9 9 606 608 +11636697: 364 74 9 7 8 1 1 6 3 +437: 1 13 4 44 259 +133186599: 386 4 5 7 18 149 9 273 +4296244: 8 5 9 354 518 2 4 442 4 +4991875: 68 807 815 7 +3103: 14 1 2 94 9 +243445: 5 4 84 5 6 22 5 53 3 8 5 +15296463: 8 19 96 4 63 +521668: 6 70 14 39 9 945 7 4 +61008657: 4 2 3 5 3 3 1 960 3 650 4 +213117984: 359 4 6 78 6 986 +238915893: 323 8 9 802 65 30 +3117470880: 234 91 20 1 732 2 +35204825: 4 98 4 6 32 1 66 179 +60297: 11 3 2 85 597 1 +603553213: 8 4 9 793 590 82 9 4 +648871: 79 2 8 520 351 +1090677: 3 8 6 408 94 5 3 7 924 +44526660558: 5 3 3 60 610 8 894 5 +30975402: 82 73 9 13 5 35 3 33 69 +2797: 3 4 8 59 377 9 6 37 +10167816: 16 689 3 1 922 +7116: 43 25 348 5 1 +10080: 7 118 1 16 5 +1286605: 9 57 209 12 1 +5641: 4 28 97 39 1 +25461: 840 3 28 3 168 +24458560: 813 60 2 5 16 28 20 +73836977: 87 943 9 77 1 +111940774200: 3 383 290 774 200 +57424: 5 65 10 912 2 +752385768: 653 8 85 2 4 9 880 5 1 8 +16488406180: 1 3 6 81 4 5 5 3 8 733 7 9 +268263: 45 366 652 20 271 +2302139112: 30 7 71 1 919 21 4 2 +308447: 70 440 32 12 7 +1109158414: 732 482 6 68 449 7 +1142: 31 36 6 13 7 +4311617856: 4 8 7 2 55 3 9 3 3 52 4 4 +55219027853: 829 6 8 1 416 9 89 2 7 3 +600691: 7 9 16 456 65 37 943 +18982810: 640 6 9 324 70 277 1 +2479694880: 8 9 461 42 2 52 710 3 +1725856: 3 91 830 318 110 22 +364307: 7 98 8 45 36 1 335 5 5 4 +416369616212: 7 3 5 9 7 239 6 9 62 1 2 +89372539: 24 86 6 8 43 3 8 7 539 +43649686080: 8 2 504 309 231 392 3 +5450: 452 2 5 455 2 +801918: 9 6 3 1 664 17 3 69 552 +9288627045930: 8 1 91 7 1 9 9 3 588 5 9 2 +502573: 1 6 88 3 5 8 11 2 4 8 957 +2275249227: 96 163 14 878 29 +119336707: 99 150 67 8 707 +56052: 2 30 54 491 78 +94465: 13 90 916 114 1 3 +729008280: 510 637 51 44 +140821: 138 1 1 839 980 +6083854: 8 76 377 4 2 78 +1886890: 14 1 669 8 2 294 +165298320: 3 423 29 5 70 9 297 +1534204989152: 9 588 781 182 2 16 +508326: 85 6 40 775 5 8 2 3 +4992289662: 32 3 583 477 187 30 +151184: 995 717 1 5 88 +133369957: 190 472 56 51 7 +3878781: 3 878 1 78 1 +3795035200: 98 44 540 40 22 +36005207: 4 87 3 8 99 5 830 369 8 +25391193: 70 642 565 85 8 +267540: 44 2 5 5 86 8 3 3 4 3 840 +34060160: 21 7 1 7 7 1 7 245 2 2 2 8 +104810565466: 5 2 3 668 4 48 7 3 4 60 6 +38399: 76 84 3 6 77 +44120979093: 5 6 7 122 5 4 57 541 9 3 +19301102: 13 786 350 4 698 4 +50556: 7 2 6 25 99 3 97 941 8 7 +1347815268: 403 40 6 2 7 17 55 3 +1153200: 2 6 39 1 930 +838660117: 9 6 2 6 8 4 53 72 5 2 120 +69072193807: 972 847 80 71 7 +6112844169: 6 674 43 8 328 57 9 +4195216964: 3 4 452 62 4 39 908 +2042564: 20 42 550 9 5 +23104713: 5 854 34 6 4 98 9 224 +203219: 64 13 23 246 15 1 2 9 +34607812: 23 45 512 994 705 3 +64993245117: 69 3 23 4 6 9 5 63 3 5 48 +12355336316: 74 3 57 259 890 79 4 +48319644808: 3 641 6 47 80 56 931 8 +41944: 465 59 80 24 +5993530053: 599 352 983 22 3 +13679965404: 3 6 4 6 73 6 962 1 3 40 4 +53500: 901 1 340 43 94 +26780520: 95 8 130 13 4 44 8 5 +779624: 23 472 35 5 9 +2879520: 31 3 2 3 9 4 7 4 7 5 2 662 +1251077: 9 3 724 64 5 +65246: 71 30 1 646 1 +16: 6 2 2 +362621273: 55 78 7 8 5 65 248 +85842: 3 89 156 3 342 +1650647484: 21 52 79 81 59 324 +23904929: 85 711 81 2 3 5 3 4 460 +30563647: 339 594 2 9 7 +3219312: 468 2 679 3 1 29 6 138 +966000632: 1 4 8 800 70 629 +138614170: 14 330 441 5 3 925 +10826201861: 664 18 2 8 3 815 215 1 +80625960: 569 53 54 54 72 37 1 +3919632: 6 1 621 8 74 +327364210: 301 9 3 22 2 3 3 4 78 5 2 +115704: 5 1 214 273 13 3 92 8 9 +5561453927: 737 3 653 9 4 428 6 93 +87643296327: 12 22 1 1 78 918 327 +239603: 1 291 3 82 80 3 +3622838: 352 7 86 9 89 38 +148812: 3 832 653 1 2 +16250: 8 4 9 8 7 4 1 1 80 9 9 622 +39296223432: 7 859 2 43 10 5 84 32 2 +259056345: 712 78 77 84 39 93 +989887572: 106 415 5 5 5 9 19 6 47 +5143: 64 80 23 +248304: 5 4 5 5 7 4 978 4 3 6 7 8 +3603692: 19 657 2 65 41 612 +42839616: 8 22 51 27 698 12 368 +98154830131: 973 8 548 30 13 1 +165277175: 2 361 7 7 175 +7780613488: 6 5 3 5 6 13 8 8 606 9 5 8 +18416712: 5 471 2 9 2 964 8 5 8 9 8 +59594828: 586 9 857 4 3 84 30 +790508: 788 93 81 6 70 8 +48543696: 89 8 65 6 32 6 2 831 +72083332391: 5 144 833 323 94 +764137724955: 6 6 3 4 3 8 6 5 48 67 1 67 +526190: 68 386 61 2 8 +4123: 86 556 5 908 5 +64381432554: 773 64 76 5 77 5 75 6 9 +164082757: 3 5 2 6 5 6 4 31 866 4 2 5 +237884584: 26 43 162 90 4 +36083237676: 70 359 56 2 3 14 7 46 6 +1878: 55 246 7 5 6 +457819: 3 3 228 7 807 7 +158996880072: 1 670 11 2 17 9 8 70 7 2 +6701935: 95 7 418 7 9 +110719: 8 502 31 7 7 +319891398: 4 551 655 87 729 878 +833602896: 66 8 84 434 103 3 +185184: 694 969 905 4 72 +213952: 41 1 40 4 63 59 4 16 8 +78931: 1 1 7 3 9 4 943 9 3 9 91 +134301604: 47 133 36 8 36 575 4 +671421: 3 6 2 6 8 2 97 7 4 6 328 5 +70158: 3 13 318 42 5 9 9 +5733100809: 915 4 59 3 8 8 236 7 8 9 +850783995: 696 1 5 25 35 7 23 279 +44154017: 7 35 3 30 6 15 +155318: 17 82 5 312 878 +34876800: 44 2 601 34 180 7 +18226: 981 3 86 6 52 +580372590: 56 86 987 72 590 +719555: 9 978 9 9 9 32 +4605867721045: 657 98 1 101 2 70 4 5 +24647706: 53 35 77 1 6 +7789398384: 778 93 942 7 34 84 +256672710: 320 67 3 3 42 95 +256570381: 249 3 98 62 165 6 +37337764268: 3 18 86 804 4 265 +1143: 4 32 4 8 2 9 980 +26189: 21 5 1 87 +1167: 717 380 70 +4151995878: 3 7 8 868 9 2 777 16 9 5 +20952985: 6 5 298 8 799 9 +658294531020: 6 7 1 6 588 1 5 5 310 2 2 +51940980: 6 8 9 5 9 2 27 4 3 4 546 6 +319465594: 4 46 68 894 7 8 2 +330139509: 823 44 7 93 2 807 49 +4478992: 8 9 6 4 9 5 227 393 7 4 2 +80030190: 4 50 4 292 33 957 +9832310681: 51 79 62 94 4 245 61 +815760: 9 407 972 4 44 +25354826: 160 93 19 35 826 +6151392: 6 1 5 13 93 +3226554: 9 497 91 51 54 +951: 29 756 128 4 34 +9197362: 6 4 2 7 4 6 5 5 14 4 383 +78551: 3 75 542 9 +111194: 281 9 38 99 4 +3928357: 8 49 834 9 8 +169317347: 6 1 7 3 91 3 5 4 9 66 7 47 +32251779: 10 4 2 8 2 9 2 21 53 4 1 7 +30253: 3 6 3 9 1 67 1 6 1 3 22 1 +3433675: 4 7 4 7 95 7 37 5 5 8 60 7 +7657276076: 73 3 2 67 3 617 28 4 9 8 +67351065: 4 422 16 41 5 1 4 241 +4095: 6 5 63 +844326123: 3 488 81 11 152 3 22 3 +1012680: 94 1 439 510 970 +146132303: 44 886 237 663 473 +41212: 73 17 225 97 12 +478035: 8 18 4 34 875 95 3 +58896002381: 917 3 22 2 1 64 237 7 4 +1659008661: 4 377 189 69 11 +1459654: 82 178 54 +18746219682: 6 7 39 1 3 218 2 994 7 6 +678912: 9 359 922 2 320 +4531938: 8 30 2 80 7 78 6 3 5 37 +2857380373: 31 3 84 50 9 2 788 373 +59851224235490: 997 5 15 5 4 6 23 548 9 +246475267: 36 683 7 44 107 4 769 +59518416: 574 1 23 5 6 9 6 8 1 36 6 +2962112: 2 4 54 4 9 9 5 3 7 45 583 +2489850: 301 4 4 4 4 29 25 503 +38062: 21 6 176 2 44 +2069: 6 9 1 9 8 4 3 4 5 6 461 22 +14854350054: 7 9 444 6 2 43 5 3 7 54 +500321: 4 15 64 4 1 4 321 +132252595: 8 5 2 252 5 94 +1434300510592: 700 3 683 510 592 +2411784329: 7 5 5 658 7 2 72 6 8 74 6 +5161755: 3 4 43 175 5 +626940: 6 5 4 9 2 74 7 836 9 270 +18794: 6 3 78 8 8 +16181779274: 53 67 401 6 947 2 53 2 +2620940: 37 3 240 39 20 7 +5358398: 1 4 6 367 21 2 9 7 39 8 +395221248: 2 6 742 910 8 576 +2269: 6 9 9 27 2 973 +23347872: 4 81 271 5 72 +30062928: 82 9 743 683 4 7 +32333: 7 2 298 10 5 1 82 +6065859: 2 8 4 8 9 5 9 4 7 3 8 859 +17176: 75 51 423 46 4 +177918: 8 4 94 95 4 866 388 +19283381223: 4 72 881 63 1 7 76 2 3 +569904: 67 882 8 4 6 +973406: 957 63 38 920 46 +1375428960: 6 37 970 687 48 +221204: 3 384 48 5 4 +9338621: 93 29 9 610 8 +295654092789: 238 55 42 616 2 873 3 +600078: 2 4 25 4 1 971 381 +304: 6 7 4 30 4 +298989664: 7 2 6 2 5 10 6 4 728 5 6 4 +205522805: 395 1 5 4 311 516 2 +270120: 32 8 4 51 4 177 25 60 +77992740: 5 4 5 38 762 3 2 315 1 3 +1412755629: 6 27 8 8 88 77 4 5 1 8 8 5 +236: 52 31 2 49 21 +24200: 8 72 64 3 7 +433162: 1 6 5 76 3 4 2 7 38 23 7 2 +8457022095: 5 9 94 32 89 702 5 2 3 5 +4718519: 7 6 13 52 4 6 1 766 559 +29256: 29 121 83 18 33 +388934891: 7 7 1 89 5 96 447 9 9 8 3 +274063839: 3 9 4 5 97 4 1 7 9 651 +792224259: 613 1 759 9 11 929 69 +5344491730542: 8 888 3 8 295 94 542 +225720: 3 1 9 90 209 +44436: 26 46 1 6 6 5 5 1 5 209 6 +616388: 1 58 2 6 388 +84658: 51 6 330 58 +61095174221: 2 289 7 151 5 741 9 3 1 +624188: 78 82 52 818 101 6 8 +6457: 7 832 1 14 570 42 6 +55512660355615: 6 168 9 660 355 61 5 +29198988: 1 2 9 704 8 9 32 6 2 4 9 +4686110: 781 60 27 83 +327770: 32 99 417 6 8 +1841813297379: 2 91 7 5 8 7 7 921 931 9 +12535012: 6 9 877 34 44 9 28 +1042: 5 7 8 622 62 +1921059: 318 6 5 3 4 2 63 8 1 8 41 +4338080: 3 6 9 88 2 5 608 +1466395: 65 5 161 4 7 1 28 954 5 +2043115844631: 6 92 3 1 952 273 31 2 +20717193: 7 3 16 2 912 533 21 +104593090: 873 25 282 59 946 7 +20760: 829 85 81 43 20 +516280: 1 417 33 38 3 327 7 3 +21824431200: 4 94 726 82 975 +76572: 2 64 79 5 9 6 6 51 5 54 +28421295360: 9 9 9 2 3 375 9 4 48 80 +15725965920: 8 8 45 97 4 226 6 70 7 +2192731311: 481 168 135 3 93 67 +4255: 834 8 9 1 5 +9611124: 31 762 3 815 2 9 4 994 +25331461341: 5 6 7 8 2 2 30 6 8 11 5 9 +1595880: 5 6 5 5 6 4 7 544 9 5 2 99 +3158499: 939 42 525 18 79 +1700028721746: 732 771 232 174 6 +116671594: 9 5 5 5 26 6 6 6 678 23 +323860350: 8 2 8 96 18 32 7 4 4 5 25 +7031: 91 9 1 7 588 +6280294: 704 8 589 59 294 +156529: 6 97 72 21 793 +30518262: 4 4 9 841 7 4 6 9 +696476: 1 5 6 67 5 659 908 40 +203616: 3 98 42 8 6 +70462318290: 74 3 431 119 910 +9170707391: 43 6 99 3 204 176 +1038160: 6 64 7 8 36 5 76 +50937: 490 9 52 345 640 +271152: 5 7 4 26 9 83 4 6 3 813 3 +3022601130: 24 4 311 85 342 159 +15126: 8 885 2 3 963 +24294419586: 5 881 51 106 81 +118272972: 6 3 4 26 8 9 540 3 3 5 7 +4402091685: 27 5 82 399 5 61 561 4 +111859: 64 57 924 18 37 +4914: 347 4 1 14 +594189: 185 3 44 8 4 8 2 6 47 5 4 +1254: 6 181 20 2 6 +781138122: 3 543 3 6 9 74 1 1 40 2 +12630: 9 7 6 68 5 7 6 3 1 3 165 6 +55725: 361 3 293 51 13 3 72 +1143632: 3 38 36 3 2 +153850: 17 9 850 +90216: 3 2 2 5 34 9 3 2 4 3 6 12 +59805: 67 68 443 +393488508995: 56 21 264 413 2 4 6 7 1 +34400: 676 3 672 4 21 25 +157113477: 359 84 521 9 708 +433254: 857 434 15 19 4 326 +10017346: 68 3 927 3 7 346 +1127: 37 3 4 6 7 +9558: 14 627 73 6 701 +26618042: 14 2 12 9 4 4 1 1 66 2 42 +752398826: 8 94 31 8 80 825 +468704: 46 25 7 59 604 +29316000: 61 5 858 2 7 75 758 7 8 +6823711592: 960 6 1 93 4 8 268 398 +2987040: 2 396 7 8 6 7 5 8 4 9 4 60 +77288552: 4 2 2 7 6 835 5 554 4 44 +46036028: 8 73 96 677 10 8 5 4 1 +2297817000: 75 9 5 3 6 63 6 3 34 8 8 +90: 4 6 74 6 +16973082771: 7 97 408 50 4 82 771 +723: 5 57 10 10 3 +4176: 6 305 321 64 6 +210943590: 87 372 2 37 434 4 15 +6583161720: 2 1 9 8 3 85 4 6 249 4 5 6 +236106070257: 4 9 95 9 1 858 59 1 55 2 +137060577: 2 7 2 4 3 1 445 2 1 9 69 2 +3528697210: 5 5 1 3 787 4 958 6 1 2 5 +6464593606244: 64 93 2 62 9 705 3 7 92 +17853: 1 8 647 3 74 310 +2556669358237: 7 6 6 1 3 3 2 92 6 9 823 7 +419724: 857 489 5 1 7 638 +1356: 4 69 58 332 593 97 +27593664: 93 883 8 40 42 +3855768: 97 5 3 96 569 8 826 6 +36893894830: 376 9 140 138 7 79 +15559530: 609 27 6 7 6 9 958 3 9 5 +1718032779: 29 5 77 1 5 587 262 5 +218925: 23 1 50 2 49 175 +3905167349265: 1 46 324 5 1 4 234 843 +181705: 268 404 270 2 263 +10496976: 178 52 588 +52210475: 5 801 1 63 9 8 +7188: 753 5 9 4 362 +241547936: 4 78 3 59 613 8 499 4 +9313: 83 1 5 50 67 +2012816904: 41 68 6 69 1 73 6 9 3 8 +554501: 55 44 99 +7663325508: 4 257 4 20 612 9 +24713450: 120 327 50 629 40 +5602093: 767 41 73 +40578645: 6 32 8 93 8 7 864 1 8 1 +8083151: 37 32 739 31 49 +249871440: 4 26 8 221 7 673 +2634215: 71 7 53 25 54 1 16 23 +324161: 3 22 2 1 61 +106897303: 432 2 4 7 59 8 5 2 7 8 6 7 +229610631: 558 575 733 714 369 +233821310: 9 60 433 812 4 489 5 +39270: 8 68 1 170 3 +18816313732: 3 5 5 78 8 2 3 1 1 4 6 542 +4308: 834 17 4 4 900 +25330058: 140 3 5 596 55 +8808870: 59 65 6 109 798 3 5 4 7 +36541877: 5 865 8 5 2 7 25 75 2 +4321100: 5 8 1 14 5 5 5 5 7 953 7 5 +127410456137: 7 92 918 48 3 8 87 137 +56880: 9 679 2 30 79 +106796160321: 9 4 3 697 4 5 384 6 3 21 +12696353411: 897 912 97 8 2 8 +1317: 5 1 219 +4506067: 52 53 327 5 7 +1032768: 8 6 34 4 72 +47792: 96 468 4 330 8 +148813: 3 2 1 722 29 62 1 84 7 1 +5571: 3 7 8 3 34 81 9 +51032215: 978 8 4 47 584 647 90 +2175: 33 7 7 9 9 24 +21125127855: 5 7 2 6 415 97 785 5 +72657447267: 21 8 2 7 1 3 6 1 9 2 6 857 +13194: 29 614 1 4 1 9 760 5 2 1 +3716117391: 7 53 5 558 559 386 5 +57760884: 91 9 269 2 8 64 9 172 8 +22394853473: 651 50 659 688 81 +28416821412: 947 227 37 1 9 4 3 +135864079: 1 224 370 3 7 1 1 8 +17322991: 2 63 21 7 35 9 3 8 1 57 7 +1876943: 5 374 6 940 3 +29392250: 8 5 955 5 790 445 5 +11138360: 794 6 5 1 1 288 33 7 2 2 +23711710488: 426 3 98 235 9 3 7 24 +748455: 396 813 3 5 615 +2911600: 565 690 8 290 +9350: 933 79 23 9 35 +4444052147: 4 440 3 36 3 3 686 14 7 +37315974494: 138 3 616 5 938 7 1 9 1 +7597472: 834 91 6 74 72 +5660264855: 2 8 599 341 5 851 6 +1004371132: 9 756 276 28 373 +4996: 5 803 1 441 4 +981846: 1 3 64 9 22 37 24 3 6 +62308: 8 8 2 81 2 6 88 +4799: 890 51 5 81 8 5 +3697566: 8 8 45 3 3 261 6 +47147: 697 341 2 5 45 122 +9362: 93 5 3 1 2 +127646682: 875 9 6 5 9 6 8 81 4 8 3 3 +1519106029630: 64 46 86 338 2 7 1 6 4 +4176: 81 5 26 403 5 6 +31200: 6 27 19 6 100 +22557668: 85 6 78 9 37 7 9 1 77 +1838: 43 7 160 5 7 7 1 82 692 +3505: 8 38 6 73 15 8 587 6 +139877308526: 36 2 8 69 7 4 9 459 5 26 +115508: 2 3 52 600 4 6 78 85 99 +73: 54 5 6 5 3 +11117039457: 3 88 97 9 912 516 2 4 9 +101476: 4 27 1 6 3 49 6 6 7 3 882 +71051003108: 3 7 516 5 3 6 79 4 563 +1408920005: 7 6 46 5 4 15 5 8 199 5 +4567288: 7 3 665 62 58 +16547564: 165 4 7 536 27 1 +32420585: 2 1 5 157 59 10 2 5 7 7 8 +5682885: 64 2 85 39 965 +12719252: 73 55 479 48 59 28 +126279: 10 5 7 1 1 9 22 57 2 3 9 +312837: 6 51 4 2 897 3 1 71 3 9 +15251921352: 28 843 8 2 524 58 9 9 8 +19117804: 58 759 585 1 4 +5469282: 449 81 159 1 9 882 +123961840129: 6 5 366 1 8 8 48 6 49 +4538624: 2 26 9 303 28 32 +4647704: 7 1 148 8 8 65 464 +59553166: 91 62 65 68 98 +1749153: 305 1 8 3 2 90 230 1 3 +26877927: 45 4 309 97 86 9 +20403125: 1 92 10 759 755 16 5 +49032608: 52 7 31 7 3 5 85 6 14 3 +266236: 738 18 1 2 8 3 4 9 5 4 8 2 +407523359: 2 213 26 7 2 8 3 6 9 4 9 2 +7964321328: 554 599 7 2 2 24 +5292084975: 49 8 135 849 1 75 +748553: 3 17 831 6 4 963 35 7 1 +858: 4 47 6 9 13 1 +26567147: 37 94 7 26 888 9 +264750906: 1 2 816 499 94 +22072138: 8 92 1 1 45 5 736 3 5 8 +1033: 35 4 6 32 161 +108028: 371 374 144 748 +24629302463: 57 8 15 264 426 +10674: 7 2 1 1 1 29 6 4 2 9 +273064: 572 60 6 428 +3771: 2 87 88 2 1 +1642741: 3 73 4 7 52 7 751 296 8 +8626: 4 4 9 329 2 65 849 459 +4522: 8 24 4 322 7 +4579924800: 48 891 944 5 381 55 +2483: 108 7 8 6 653 896 8 +1639304771: 2 968 169 47 71 +9420800: 5 80 12 87 80 640 +22016: 361 4 6 332 +2757294: 557 50 99 1 143 1 +4034670417625: 479 382 2 5 9 35 7 32 7 +186545: 8 42 8 2 8 3 5 240 894 5 +3367789562: 46 2 9 86 58 97 6 2 +31692758495: 6 1 5 56 92 787 8 84 9 5 +3687221020: 72 1 813 29 92 41 7 5 +1174068: 3 93 54 42 +6212876610: 25 8 29 117 35 887 30 +43997715: 1 466 59 3 10 3 +93053300: 7 705 6 6 72 3 5 2 1 25 2 +824971261: 6 30 44 150 97 12 61 +790043: 7 33 6 570 23 +1446700: 3 52 6 31 4 32 10 74 5 +188697796: 899 325 8 826 28 23 +62128108: 9 98 2 1 2 8 55 4 4 33 57 +269606526: 2 2 7 4 7 1 451 23 5 1 26 +40727: 637 19 61 670 41 +163974862: 4 6 70 8 6 99 5 5 5 7 2 +24957571896: 36 77 8 2 60 3 5 1 36 8 9 +398337: 753 529 1 +12531000: 995 76 156 4 75 +2369268: 2 9 1 4 6 5 1 975 1 9 8 1 +959968: 5 576 2 8 58 4 2 23 7 9 +19277779: 3 6 1 272 48 523 9 62 1 +2875: 5 76 99 6 +8752751700: 3 5 85 3 467 7 97 503 7 +63187: 84 6 7 396 9 +816126443: 6 796 4 6 6 322 2 3 +6447556730: 1 6 9 31 4 9 4 9 93 5 358 +1106: 3 31 8 6 88 +57056: 36 154 3 5 6 +2763419: 6 2 291 113 99 79 1 7 1 +32718971: 7 1 4 1 3 50 9 9 4 3 57 74 +120490076: 66 3 9 44 9 719 4 8 7 1 +6979920: 8 476 2 4 916 +6022045712: 1 601 167 36 9 3 64 12 +3436825088958: 143 8 239 50 88 957 +1481427625: 513 6 7 9 7 6 10 5 8 4 8 7 +1097550866074: 1 6 775 6 30 9 62 3 9 2 5 +1184486: 6 419 3 92 454 +1925030: 9 1 385 5 33 +1880172960: 926 72 7 4 3 9 1 9 94 1 +40501: 54 81 8 580 8 7 13 +234501: 66 9 1 5 70 +774432958: 484 80 7 6 2 6 958 +47851667615: 4 37 74 562 31 676 16 +1663446: 1 416 195 48 1 4 4 4 5 +46525: 56 827 202 6 5 +67840: 778 841 68 9 40 +119681348: 95 1 6 5 2 538 1 78 19 1 +1835433995913: 89 6 1 2 19 9 22 8 5 7 9 7 +3885633: 79 3 61 299 733 +1181222869: 14 89 94 993 5 2 871 +2259044: 2 511 49 829 87 2 +17659147653: 46 980 683 7 4 51 17 9 +8045506: 7 5 901 53 2 +14702223: 7 41 5 6 8 714 1 9 5 84 9 +40774706027: 44 4 95 70 77 467 3 52 +5550286445: 118 2 619 3 391 92 9 5 +565023096: 9 842 4 94 706 +55020: 248 83 9 8 4 5 620 +4796172: 58 50 93 9 3 2 673 786 +397644: 464 95 9 914 10 +3659947200: 98 585 7 240 38 +358785: 49 8 8 4 91 511 2 63 +21695046156: 9 785 6 930 3 4 3 7 4 81 +35339440: 7 1 5 33 1 880 56 7 8 +19456494: 122 219 3 42 57 +555189: 5 5 44 7 92 +55080183: 51 5 54 4 18 4 +167633333: 95 18 544 98 10 6 4 +509490: 32 18 278 4 466 544 9 +2671515: 3 690 771 5 +2178627673: 2 3 660 93 2 66 6 2 611 +1255776654369: 39 3 3 3 65 6 4 9 807 69 +1955515: 5 39 5 515 +4163520: 849 2 8 8 9 5 4 55 8 4 5 3 +297664269: 705 7 703 2 6 +1007957788: 7 86 5 1 16 9 1 370 9 8 8 +615600: 64 340 5 16 1 2 3 240 3 +671839: 2 957 7 7 7 +3679364: 4 2 36 9 6 2 8 6 8 682 4 4 +62349: 670 30 1 682 3 +74659416: 154 894 1 71 542 +13959000: 9 8 16 23 990 12 +52121632680: 5 212 1 632 680 +23815369: 8 4 7 1 66 4 897 90 7 7 5 +12089111: 120 61 28 111 +7895087415: 87 16 431 21 9 4 4 1 9 3 +544726: 53 1 3 3 7 2 4 4 3 3 1 26 +1016850240: 686 2 7 294 9 999 9 5 8 +712700: 5 8 62 9 3 63 8 9 2 844 5 +2292959459: 806 3 5 3 4 7 2 79 4 2 59 +415885666: 1 593 1 7 85 666 +2210: 1 9 3 532 798 868 +497834: 116 45 627 151 83 +216: 1 24 92 +1289365: 8 9 5 8 36 4 6 4 579 7 85 +67194816: 61 8 2 5 2 7 8 168 2 24 8 +81180: 2 83 226 598 82 +444550: 2 2 6 8 132 7 267 533 5 +253291776: 6 422 88 3 776 +520783740: 6 803 1 739 6 2 4 30 29 +6665: 8 7 119 +26535678: 10 9 6 4 5 7 69 1 2 4 324 +8909439693: 68 1 27 89 634 86 +108976: 50 89 28 4 1 7 +203112: 109 5 9 97 312 +6275557: 4 919 851 505 558 +59162940: 37 59 5 8 174 3 45 662 +4850: 9 523 6 63 74 +162291876: 53 11 98 2 75 7 447 3 3 +8361: 62 120 921 +2591: 87 23 590 +22457724: 5 6 3 8 448 68 28 876 1 +15640: 39 3 3 50 92 +1042002: 42 35 71 45 657 +2872147: 4 4 9 303 6 6 1 6 48 1 6 +135749: 44 5 9 7 303 5 +610317680964: 428 29 5 3 948 4 501 +3614347: 899 3 620 5 544 1 2 2 9 +2474220095: 7 4 5 660 6 7 76 68 7 95 +9754295: 91 5 7 71 145 +2440505: 21 911 87 5 479 +906663: 841 401 73 2 1 +326593610: 9 4 9 64 50 9 37 8 5 5 7 +7856: 46 8 24 8 2 +56728: 48 653 6 75 8 +26446421444: 84 3 9 8 2 2 352 485 2 2 +14309064: 29 1 924 89 6 +10858132837: 7 3 91 6 92 2 1 328 37 +110031480: 4 62 4 4 8 681 6 68 9 1 +183270830160: 2 87 5 3 3 7 728 6 9 5 8 6 +1738170: 117 3 55 8 90 +199413405: 72 8 1 5 8 4 8 8 30 5 9 +1024078: 58 882 2 90 4 1 9 1 9 1 +81018144: 15 399 604 6 54 +380432: 11 880 4 34 8 +756904320: 47 4 237 960 29 4 31 9 +37875841: 292 9 32 826 5 841 +18946: 611 31 5 +425004648: 804 659 83 9 35 1 +98830163: 455 2 6 23 181 +42235404: 5 844 3 540 4 +121345: 24 2 64 5 5 +18213336617: 416 9 3 6 6 81 617 +13878207: 554 25 22 6 166 40 +17332152: 3 5 91 12 34 9 5 3 3 4 3 8 +486720: 17 35 4 5 468 +69521: 18 5 2 746 889 +24464: 5 9 87 81 902 4 +579680: 1 9 5 1 1 497 53 8 8 6 16 +70545148: 37 22 8 3 7 5 7 4 3 56 9 7 +92546164: 9 2 511 35 164 +502900448688: 274 8 3 631 2 752 594 +261583474: 2 485 130 770 64 1 74 +8324640: 6 9 25 9 2 8 10 2 47 24 5 +883927: 9 774 169 72 5 859 16 +2363058: 11 579 763 4 6 +229942971699: 2 9 7 6 3 989 9 2 8 68 5 5 +88762181: 59 174 69 15 146 +535: 1 374 1 19 142 +3896068701: 81 1 68 1 80 88 696 6 +1821052: 2 481 734 +5695164: 181 7 841 91 36 +64607163: 3 6 5 9 6 18 7 97 14 2 3 +4459905363: 8 7 92 1 6 5 6 14 4 9 363 +10759540: 92 266 93 6 73 70 +74132578800: 460 69 335 84 83 +20723: 4 25 8 38 9 19 2 7 88 6 +29782203: 8 37 106 73 947 +1921715: 9 5 2 2 9 3 160 8 2 3 3 11 +145152: 6 4 39 6 89 58 56 +1493436877681: 7 5 426 1 66 5 3 82 6 81 +576576: 641 14 88 17 6 +64908: 56 4 4 228 463 22 71 +245893417888: 1 251 7 56 351 4 712 +2880342529218: 4 5 2 236 7 352 9 3 4 27 +108: 8 82 7 5 6 +14683: 3 8 6 98 185 +3410036: 8 16 18 526 339 6 +225840: 43 35 6 3 5 +64: 51 3 7 3 +43632269352: 971 234 9 7 127 27 8 +182654: 7 352 2 74 10 5 90 2 63 +8353994736: 83 53 994 733 3 +42552965: 351 70 50 6 3 96 4 96 5 +18379: 9 1 1 7 85 7 9 +65703: 929 9 69 1 1 25 940 6 8 +703626: 35 14 31 4 462 +4838557434: 80 553 59 6 183 743 4 +33374592: 2 9 2 71 4 24 888 +19947875: 717 7 6 3 5 5 51 8 6 532 +140339: 4 369 95 41 78 +6506952: 814 1 69 8 920 709 3 +50887: 525 5 95 287 250 +65062632: 836 85 163 377 2 6 +6662009528: 66 618 7 4 9 9 3 8 14 8 +3053345: 8 500 89 6 5 +72140629: 86 8 5 5 5 599 6 2 7 1 6 2 +4499: 8 7 99 7 7 3 2 1 +15752202: 7 3 895 8 44 3 1 33 2 5 7 +4928388480: 100 2 16 93 8 3 80 69 +109: 6 17 7 +5292008: 2 8 94 946 3 8 2 45 1 3 4 +9845309045: 8 77 872 3 6 532 5 +816929: 121 683 12 9 31 +1267274913: 22 8 72 749 13 +725976138: 2 63 99 783 11 7 +170838486: 1 1 7 3 350 4 7 2 3 6 8 6 +3252: 10 63 8 5 5 1 36 +4890566972: 488 463 593 689 8 2 +305667295613: 796 96 823 845 4 233 +87885: 9 77 1 19 837 +371014: 180 7 5 41 577 +19697057: 98 2 505 199 37 +8286699609: 7 299 91 46 7 3 39 9 9 +857291: 80 1 73 674 98 84 +921274333: 376 926 6 63 86 2 3 1 7 +540968278: 7 118 76 275 diff --git a/day07/main.cpp b/day07/main.cpp @@ -0,0 +1,106 @@ +#include <iostream> +#include <filesystem> +#include <fstream> +#include <vector> +#include <cstring> +#include <cstdio> +#include <tuple> +#include <algorithm> +#include <sstream> + +enum class Op { + sum, + mul +}; + +//@todo make generic function using template +void genVariations(std::vector<Op> &v, size_t len, std::vector<std::vector<Op>> &vs) { + if (v.size()==len) { + vs.push_back(v); + return; + } + static const std::vector<Op> ops = {Op::sum, Op::mul}; + for (Op o:ops) { + v.push_back(o); + genVariations(v, len, vs); + v.pop_back(); + } +} + +class Equation { +public: + int64_t res; + std::vector<int64_t> numbers; + std::vector<std::vector<Op>> ps; // operator permutations + + Equation(std::string in) { + char tmp[256] = {0}; + std::sscanf(in.c_str(), "%ld: %[^\n]", &res, tmp); + std::istringstream iss(tmp); + int64_t num; + while (iss >> num) numbers.push_back(num); + populate(); + } + + int64_t calc(const std::vector<Op> &ops) { + int64_t r = numbers.front(); + for (size_t i=0; i<ops.size(); ++i) { + if (ops[i]==Op::mul) r *= numbers[i+1]; + if (ops[i]==Op::sum) r += numbers[i+1]; + } + return r; + } + +private: + void populate() { + std::vector<Op> v; + genVariations(v, numbers.size()-1, ps); + } +}; + +typedef std::vector<Equation> Data; + +template<typename T> +T read_file(const std::string &path) { + std::ifstream ifs(path, std::ios::binary); + if (!ifs.is_open()) { + throw std::runtime_error(path+":"+std::strerror(errno)); + } + T buf; + while (1) { + std::string str; + std::getline(ifs, str); + if (!str.empty()) buf.push_back(Equation(str)); + if (!ifs) break; + } + return buf; +} + +int64_t part1(Data &input [[ maybe_unused ]]) { + int64_t r = 0; + for (auto &e:input) { + //std::printf("res:%ld\n", e.res); + for (auto &v:e.ps) { + //std::printf("\ncalc()=%ld\n", e.calc(v)); + if (e.res==e.calc(v)) { + r+=e.res; + break; + } + } + //std::printf("-------------\n"); + } + return r; +} +int64_t part2(Data &input [[ maybe_unused ]]) { + return 0; +} + +int main(int argc, char **argv) { + const std::string fname = argc>1 ? argv[1] : "test1.txt"; + std::cout << "AoC 2015 day 07 " << fname << std::endl; + Data input = read_file<Data>(fname); + std::cout << "part1: " << part1(input) << std::endl; + std::cout << "part2: " << part2(input) << std::endl; + + return 0; +} diff --git a/day07/test1.txt b/day07/test1.txt @@ -0,0 +1,9 @@ +190: 10 19 +3267: 81 40 27 +83: 17 5 +156: 15 6 +7290: 6 8 6 15 +161011: 16 10 13 +192: 17 8 14 +21037: 9 7 18 13 +292: 11 6 16 20 diff --git a/tpl/Makefile b/tpl/Makefile @@ -2,7 +2,7 @@ NAME=$(shell basename ${PWD}) SRC=$(wildcard *.cpp) DEPS:=$(wildcard *.hpp) OBJ:=$(SRC:.cpp=.o) -CXXFLAGS=-O2 -std=c++17 -Werror -Wall -Wextra -I. +CXXFLAGS=-O2 -std=c++23 -Werror -Wall -Wextra -I. LDFLAGS=-lstdc++ all: $(NAME) diff --git a/tpl/main.cpp b/tpl/main.cpp @@ -27,10 +27,10 @@ T read_file(const std::string &path) { return buf; } -int part1(Data &input) { +int part1(Data &input [[ maybe_unused ]]) { return 0; } -int part2(Data &input) { +int part2(Data &input [[ maybe_unused ]]) { return 0; }