From b8b44946282e0c4ad54431695f89e11319da9b4c Mon Sep 17 00:00:00 2001 From: Benjo Date: Wed, 29 Dec 2021 00:59:50 +0100 Subject: [PATCH] added fetching from site if input not present locally --- .gitignore | 1 + CMakeLists.txt | 11 +- input/01_input.txt | 2252 +++++++++++++++++++++++++++++++++++++++----- input/02_input.txt | 1000 ++++++++++++++++++++ input/03_input.txt | 1000 ++++++++++++++++++++ src/02/Day02.cpp | 2 +- src/03/Day03.cpp | 2 +- src/main.cpp | 37 +- 8 files changed, 4037 insertions(+), 268 deletions(-) create mode 100644 input/02_input.txt create mode 100644 input/03_input.txt diff --git a/.gitignore b/.gitignore index ff9047e..5709d20 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /cmake-build-debug/ +session/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 52359e3..d14c298 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,11 +3,16 @@ project(AdventOfCode2022) set(CMAKE_CXX_STANDARD 23) -include(FetchContent) -FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/libcpr/cpr.git GIT_TAG 100cf2050be7619430a615cd0d580b33c62fde6b) -FetchContent_MakeAvailable(cpr) +if (WIN32) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +endif() file(GLOB_RECURSE SRC_FILES src/**.cpp src/**.h) add_executable(AdventOfCode2022 ${SRC_FILES}) +include(FetchContent) +FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/libcpr/cpr.git GIT_TAG 100cf2050be7619430a615cd0d580b33c62fde6b) +FetchContent_MakeAvailable(cpr) + target_link_libraries(AdventOfCode2022 PRIVATE cpr::cpr) \ No newline at end of file diff --git a/input/01_input.txt b/input/01_input.txt index 975a1e1..7e216a8 100644 --- a/input/01_input.txt +++ b/input/01_input.txt @@ -1,252 +1,2000 @@ -inp w -mul x 0 -add x z -mod x 26 -div z 1 -add x 11 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 16 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 1 -add x 12 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 11 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 1 -add x 13 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 12 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 26 -add x -5 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 12 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 26 -add x -3 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 12 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 1 -add x 14 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 2 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 1 -add x 15 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 11 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 26 -add x -16 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 4 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 1 -add x 14 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 12 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 1 -add x 15 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 9 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 26 -add x -7 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 10 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 26 -add x -11 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 11 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 26 -add x -6 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 6 -mul y x -add z y -inp w -mul x 0 -add x z -mod x 26 -div z 26 -add x -11 -eql x w -eql x 0 -mul y 0 -add y 25 -mul y x -add y 1 -mul z y -mul y 0 -add y w -add y 15 -mul y x -add z y +191 +185 +188 +189 +204 +213 +215 +227 +222 +221 +236 +235 +236 +232 +224 +228 +234 +226 +227 +228 +230 +232 +234 +213 +197 +198 +210 +238 +248 +261 +263 +265 +262 +295 +296 +311 +330 +333 +337 +344 +345 +356 +359 +360 +364 +367 +383 +386 +387 +391 +424 +426 +428 +440 +442 +446 +450 +423 +428 +423 +425 +445 +429 +436 +465 +456 +463 +461 +463 +483 +484 +500 +517 +525 +529 +527 +530 +535 +566 +578 +582 +587 +604 +613 +614 +609 +611 +619 +623 +627 +621 +622 +626 +644 +646 +655 +657 +659 +661 +671 +673 +668 +673 +676 +682 +683 +678 +679 +682 +681 +684 +686 +690 +693 +698 +700 +702 +707 +708 +732 +733 +734 +743 +745 +776 +794 +804 +784 +790 +813 +856 +855 +859 +850 +851 +886 +885 +888 +889 +883 +885 +920 +919 +917 +915 +918 +909 +910 +924 +925 +932 +933 +935 +966 +970 +971 +974 +958 +959 +961 +959 +964 +969 +970 +973 +972 +976 +998 +1009 +1010 +1011 +1046 +1047 +1040 +1041 +1056 +1062 +1061 +1062 +1077 +1078 +1080 +1082 +1094 +1096 +1097 +1103 +1128 +1125 +1167 +1176 +1175 +1173 +1183 +1182 +1183 +1188 +1202 +1204 +1205 +1206 +1207 +1212 +1235 +1236 +1256 +1268 +1270 +1276 +1281 +1283 +1276 +1287 +1292 +1295 +1291 +1297 +1298 +1301 +1312 +1316 +1333 +1327 +1340 +1338 +1348 +1364 +1381 +1382 +1383 +1394 +1385 +1388 +1387 +1388 +1394 +1398 +1400 +1397 +1399 +1401 +1408 +1410 +1420 +1421 +1434 +1433 +1436 +1456 +1455 +1479 +1482 +1483 +1522 +1526 +1527 +1542 +1543 +1544 +1548 +1557 +1571 +1574 +1580 +1579 +1602 +1618 +1605 +1608 +1612 +1622 +1625 +1626 +1633 +1648 +1641 +1643 +1650 +1652 +1659 +1678 +1681 +1688 +1692 +1702 +1686 +1688 +1685 +1684 +1674 +1694 +1696 +1695 +1720 +1729 +1736 +1762 +1763 +1767 +1780 +1789 +1796 +1798 +1799 +1800 +1808 +1800 +1805 +1848 +1849 +1867 +1888 +1902 +1903 +1920 +1923 +1926 +1930 +1933 +1925 +1906 +1878 +1898 +1899 +1930 +1936 +1948 +1974 +1983 +1984 +1986 +1983 +1984 +1987 +1985 +1988 +1992 +2005 +2009 +2013 +2025 +2033 +2043 +2046 +2030 +2014 +2009 +2011 +2013 +2043 +2049 +2053 +2065 +2070 +2079 +2080 +2090 +2092 +2102 +2116 +2138 +2140 +2141 +2143 +2149 +2152 +2153 +2154 +2170 +2194 +2192 +2216 +2231 +2246 +2261 +2268 +2269 +2252 +2260 +2264 +2274 +2289 +2293 +2296 +2297 +2300 +2305 +2334 +2329 +2353 +2357 +2359 +2364 +2374 +2377 +2364 +2365 +2366 +2360 +2362 +2360 +2361 +2367 +2357 +2362 +2376 +2379 +2380 +2381 +2401 +2436 +2435 +2439 +2446 +2454 +2456 +2459 +2492 +2493 +2514 +2519 +2524 +2529 +2530 +2535 +2548 +2549 +2551 +2548 +2553 +2552 +2556 +2563 +2570 +2603 +2616 +2617 +2623 +2630 +2631 +2641 +2645 +2660 +2662 +2663 +2664 +2662 +2668 +2673 +2677 +2687 +2688 +2699 +2698 +2691 +2695 +2696 +2710 +2711 +2717 +2722 +2723 +2747 +2746 +2754 +2753 +2752 +2771 +2773 +2774 +2777 +2789 +2790 +2805 +2807 +2818 +2817 +2825 +2818 +2828 +2833 +2834 +2837 +2839 +2854 +2856 +2858 +2859 +2863 +2880 +2882 +2884 +2887 +2888 +2889 +2902 +2911 +2917 +2936 +2938 +2940 +2943 +2944 +2943 +2947 +2954 +2956 +2957 +2959 +2957 +2958 +2959 +2956 +2959 +2960 +2969 +2974 +2979 +2983 +2985 +2986 +2992 +2993 +2995 +3025 +3037 +3036 +3037 +3038 +3040 +3043 +3049 +3058 +3071 +3072 +3080 +3083 +3081 +3090 +3091 +3070 +3076 +3079 +3083 +3084 +3086 +3101 +3114 +3106 +3107 +3137 +3138 +3139 +3137 +3133 +3137 +3102 +3108 +3109 +3124 +3130 +3138 +3149 +3150 +3160 +3171 +3191 +3190 +3200 +3205 +3229 +3235 +3237 +3238 +3239 +3243 +3244 +3245 +3246 +3250 +3265 +3268 +3269 +3271 +3279 +3278 +3279 +3280 +3281 +3290 +3295 +3296 +3300 +3303 +3304 +3305 +3308 +3325 +3313 +3326 +3327 +3335 +3336 +3337 +3335 +3361 +3378 +3374 +3378 +3387 +3406 +3416 +3418 +3438 +3454 +3460 +3475 +3476 +3477 +3471 +3476 +3477 +3486 +3487 +3500 +3502 +3503 +3530 +3531 +3530 +3556 +3563 +3564 +3565 +3566 +3580 +3587 +3591 +3598 +3599 +3612 +3613 +3624 +3623 +3631 +3660 +3661 +3662 +3668 +3671 +3672 +3674 +3683 +3684 +3693 +3694 +3700 +3696 +3699 +3705 +3706 +3710 +3717 +3731 +3734 +3729 +3735 +3736 +3739 +3749 +3734 +3739 +3742 +3753 +3756 +3757 +3775 +3777 +3774 +3780 +3785 +3786 +3790 +3792 +3796 +3798 +3802 +3817 +3818 +3815 +3822 +3824 +3849 +3856 +3871 +3845 +3847 +3849 +3851 +3853 +3884 +3885 +3887 +3889 +3891 +3894 +3895 +3900 +3918 +3935 +3936 +3941 +3945 +3936 +3942 +3945 +3942 +3943 +3965 +3974 +3976 +3979 +3975 +3976 +3980 +3993 +3992 +3991 +3999 +4000 +3996 +4019 +4028 +4029 +4031 +4053 +4054 +4080 +4087 +4089 +4088 +4098 +4100 +4103 +4104 +4112 +4125 +4145 +4148 +4152 +4153 +4158 +4162 +4165 +4177 +4184 +4203 +4205 +4206 +4207 +4211 +4215 +4221 +4240 +4247 +4253 +4261 +4262 +4265 +4269 +4273 +4274 +4258 +4260 +4264 +4282 +4299 +4313 +4284 +4287 +4289 +4290 +4293 +4295 +4297 +4296 +4310 +4314 +4313 +4327 +4329 +4330 +4328 +4338 +4347 +4368 +4371 +4373 +4379 +4388 +4392 +4396 +4393 +4394 +4393 +4397 +4406 +4409 +4410 +4414 +4437 +4436 +4428 +4429 +4434 +4426 +4427 +4428 +4445 +4447 +4467 +4471 +4470 +4472 +4485 +4487 +4493 +4495 +4491 +4497 +4500 +4506 +4507 +4508 +4511 +4518 +4519 +4523 +4520 +4523 +4540 +4541 +4548 +4549 +4550 +4551 +4560 +4570 +4586 +4575 +4581 +4585 +4586 +4591 +4601 +4595 +4597 +4601 +4613 +4615 +4617 +4619 +4604 +4609 +4610 +4616 +4640 +4666 +4676 +4677 +4678 +4709 +4704 +4719 +4727 +4729 +4730 +4747 +4753 +4755 +4768 +4770 +4772 +4777 +4781 +4811 +4814 +4843 +4844 +4846 +4850 +4862 +4863 +4868 +4869 +4870 +4871 +4874 +4881 +4882 +4878 +4887 +4895 +4898 +4910 +4920 +4908 +4910 +4909 +4914 +4916 +4922 +4914 +4918 +4926 +4949 +4952 +4953 +4955 +4956 +4959 +4985 +4986 +4990 +4992 +5028 +5029 +5032 +5030 +5037 +5038 +5047 +5053 +5054 +5059 +5057 +5059 +5062 +5067 +5085 +5086 +5090 +5084 +5077 +5078 +5081 +5091 +5094 +5096 +5095 +5097 +5103 +5118 +5144 +5146 +5153 +5160 +5169 +5173 +5174 +5175 +5184 +5187 +5195 +5196 +5216 +5225 +5238 +5239 +5232 +5235 +5237 +5242 +5244 +5247 +5254 +5262 +5271 +5281 +5287 +5288 +5260 +5264 +5282 +5295 +5301 +5304 +5310 +5295 +5296 +5297 +5298 +5303 +5304 +5305 +5277 +5278 +5289 +5295 +5290 +5297 +5299 +5320 +5328 +5341 +5347 +5356 +5361 +5364 +5365 +5378 +5379 +5377 +5378 +5367 +5380 +5381 +5387 +5385 +5390 +5391 +5392 +5415 +5422 +5423 +5425 +5439 +5441 +5448 +5455 +5470 +5477 +5482 +5488 +5489 +5492 +5501 +5499 +5496 +5499 +5533 +5552 +5562 +5563 +5565 +5566 +5572 +5571 +5581 +5583 +5589 +5594 +5593 +5596 +5602 +5606 +5629 +5643 +5644 +5652 +5673 +5676 +5680 +5676 +5681 +5696 +5703 +5698 +5718 +5720 +5733 +5736 +5741 +5766 +5771 +5786 +5787 +5793 +5790 +5786 +5804 +5805 +5808 +5809 +5816 +5810 +5811 +5818 +5829 +5836 +5839 +5824 +5839 +5843 +5845 +5849 +5853 +5856 +5861 +5873 +5894 +5895 +5896 +5897 +5898 +5899 +5900 +5913 +5917 +5918 +5923 +5924 +5934 +5935 +5952 +5965 +5963 +5958 +5961 +5975 +5988 +5989 +5996 +5997 +6008 +6011 +6023 +6024 +6033 +6048 +6050 +6051 +6049 +6048 +6043 +6048 +6051 +6055 +6081 +6084 +6087 +6093 +6092 +6090 +6078 +6079 +6103 +6092 +6094 +6099 +6100 +6116 +6123 +6129 +6127 +6138 +6139 +6141 +6143 +6146 +6147 +6159 +6162 +6163 +6177 +6179 +6183 +6187 +6188 +6194 +6198 +6213 +6237 +6267 +6282 +6288 +6292 +6297 +6310 +6323 +6325 +6324 +6347 +6349 +6350 +6353 +6363 +6376 +6384 +6394 +6397 +6401 +6402 +6399 +6415 +6416 +6421 +6422 +6423 +6420 +6445 +6446 +6449 +6451 +6457 +6460 +6461 +6467 +6468 +6473 +6474 +6517 +6522 +6519 +6515 +6532 +6533 +6535 +6530 +6532 +6522 +6548 +6549 +6565 +6568 +6579 +6556 +6563 +6565 +6572 +6576 +6578 +6601 +6608 +6611 +6612 +6626 +6619 +6651 +6657 +6658 +6666 +6665 +6660 +6682 +6704 +6705 +6711 +6708 +6716 +6720 +6725 +6727 +6729 +6733 +6734 +6737 +6736 +6741 +6742 +6743 +6750 +6756 +6757 +6758 +6755 +6774 +6773 +6774 +6780 +6781 +6790 +6791 +6800 +6812 +6815 +6817 +6827 +6826 +6832 +6833 +6834 +6833 +6822 +6825 +6829 +6836 +6840 +6846 +6850 +6861 +6868 +6869 +6872 +6879 +6882 +6884 +6907 +6917 +6930 +6924 +6934 +6931 +6918 +6924 +6928 +6934 +6935 +6936 +6953 +6955 +6964 +6987 +6999 +7009 +7042 +7048 +7027 +7054 +7053 +7072 +7073 +7055 +7056 +7057 +7079 +7080 +7084 +7095 +7108 +7107 +7109 +7111 +7134 +7135 +7137 +7138 +7145 +7151 +7161 +7172 +7179 +7183 +7189 +7188 +7189 +7195 +7202 +7236 +7241 +7250 +7277 +7295 +7297 +7294 +7298 +7297 +7301 +7289 +7291 +7276 +7293 +7295 +7311 +7318 +7341 +7378 +7398 +7408 +7409 +7412 +7409 +7413 +7397 +7399 +7423 +7424 +7423 +7426 +7418 +7414 +7409 +7412 +7425 +7426 +7433 +7439 +7448 +7462 +7466 +7467 +7468 +7477 +7480 +7481 +7498 +7499 +7501 +7507 +7527 +7535 +7548 +7551 +7552 +7555 +7561 +7554 +7559 +7560 +7587 +7590 +7596 +7620 +7628 +7645 +7646 +7652 +7653 +7654 +7663 +7670 +7678 +7683 +7686 +7687 +7683 +7692 +7691 +7687 +7688 +7691 +7699 +7698 +7725 +7733 +7734 +7736 +7740 +7751 +7744 +7724 +7719 +7729 +7731 +7746 +7747 +7749 +7722 +7725 +7730 +7735 +7737 +7738 +7739 +7724 +7721 +7724 +7736 +7727 +7730 +7731 +7732 +7736 +7737 +7768 +7787 +7797 +7807 +7815 +7819 +7825 +7852 +7856 +7862 +7869 +7881 +7882 +7885 +7888 +7892 +7889 +7893 +7895 +7896 +7901 +7919 +7921 +7932 +7933 +7964 +7979 +7990 +7991 +7994 +7997 +8011 +8005 +8006 +8014 +8047 +8049 +8064 +8065 +8046 +8047 +8079 +8081 +8082 +8083 +8055 +8052 +8056 +8063 +8064 +8066 +8053 +8067 +8072 +8073 +8077 +8079 +8081 +8076 +8083 +8086 +8098 +8100 +8109 +8107 +8124 +8125 +8126 +8127 +8145 +8146 +8152 +8175 +8176 +8177 +8182 +8193 +8195 +8197 +8199 +8203 +8204 +8213 +8217 +8237 +8240 +8239 +8230 +8237 +8245 +8259 +8264 +8272 +8288 +8285 +8286 +8300 +8301 +8304 +8305 +8327 +8326 +8327 +8341 +8343 +8356 +8357 +8358 +8367 +8374 +8375 +8391 +8392 +8393 +8394 +8399 +8405 +8402 +8404 +8435 +8444 +8484 +8481 +8490 +8492 +8493 +8494 +8503 +8506 +8516 +8515 +8516 +8504 +8508 +8513 +8529 +8542 +8545 +8541 +8546 +8549 +8570 +8552 +8553 +8581 +8578 +8585 +8593 +8596 +8605 +8606 +8608 +8616 +8627 +8628 +8627 +8639 +8644 +8645 +8626 +8633 +8635 +8636 +8640 +8645 +8655 +8673 +8693 +8694 +8695 +8696 +8695 +8714 +8716 +8742 +8739 +8735 +8740 +8763 +8762 +8771 +8772 +8777 +8776 +8787 +8788 +8795 +8796 +8777 +8782 +8783 +8794 +8800 +8810 +8827 +8828 +8833 +8829 +8841 +8862 +8865 +8867 +8869 +8895 +8899 +8901 +8904 +8908 +8909 +8927 +8928 +8930 +8931 +8935 +8945 +8946 +8950 +8954 +8957 +8959 +8949 +8961 +8976 +8980 +8986 +8988 +8992 +9003 +9008 +9009 +9029 +9050 +9051 +9054 +9055 +9068 +9054 +9071 +9082 +9087 +9089 +9112 +9113 +9127 +9126 +9125 +9129 +9138 +9140 +9145 +9149 +9151 +9179 +9185 +9187 +9188 +9189 +9186 +9190 +9207 +9208 +9209 +9221 +9228 +9252 +9254 +9264 +9267 +9276 +9287 +9293 +9292 +9260 +9261 +9260 +9265 +9266 +9285 +9287 +9289 +9290 +9291 +9292 +9293 +9295 +9313 +9314 +9291 +9282 +9304 +9315 +9316 +9317 +9327 +9345 +9350 +9352 +9356 +9366 +9367 +9400 +9407 +9408 +9415 +9418 +9419 +9432 +9441 +9442 +9439 +9440 +9451 +9455 +9464 +9472 +9479 +9481 +9490 +9514 +9527 +9546 +9552 +9556 +9570 +9582 +9584 +9592 +9597 +9602 +9618 +9619 +9622 +9639 +9645 +9648 +9643 +9647 +9648 +9650 +9641 +9665 +9678 +9681 +9682 +9683 +9692 +9703 +9704 +9702 +9704 +9712 +9726 +9731 +9732 +9733 +9744 +9745 +9757 +9755 +9763 +9764 +9766 +9768 +9782 +9780 +9781 +9783 +9786 +9803 +9804 +9821 +9822 +9840 +9841 +9843 +9839 +9840 +9846 +9856 +9859 +9863 +9862 +9864 +9865 +9866 +9870 +9878 +9877 +9894 +9896 +9937 +9938 +9943 +9944 +9943 +9952 +9962 +9983 +9985 +9984 +9992 +10002 +10003 +10041 +10040 +10041 +10040 +10042 +10029 +10034 +10033 +10034 +10052 +10053 +10062 +10055 +10056 +10057 +10069 +10073 +10067 +10070 +10065 +10064 +10069 +10071 +10092 +10069 +10070 +10080 +10095 +10099 +10100 +10101 +10099 +10115 +10116 +10117 +10122 +10124 +10129 +10096 +10101 +10106 +10099 +10102 +10143 +10144 +10145 +10146 +10148 +10149 +10150 +10160 +10132 +10137 +10177 +10181 +10178 +10183 +10189 +10191 +10192 +10194 +10203 +10199 +10207 +10218 +10223 +10224 +10225 +10245 +10239 +10247 +10252 +10250 +10254 +10255 +10256 +10279 +10280 +10292 +10293 +10300 +10310 +10312 +10321 +10324 +10326 +10330 +10329 +10328 +10329 +10333 +10355 +10354 +10349 +10352 +10357 +10369 +10386 +10387 +10402 +10406 +10407 +10404 +10405 +10407 +10408 +10412 +10413 +10417 +10420 +10412 +10426 +10427 +10424 +10433 +10434 +10435 +10456 +10472 +10492 +10494 +10508 +10510 +10511 +10512 +10513 +10514 +10507 +10510 +10511 +10515 +10525 +10526 diff --git a/input/02_input.txt b/input/02_input.txt new file mode 100644 index 0000000..227deb8 --- /dev/null +++ b/input/02_input.txt @@ -0,0 +1,1000 @@ +forward 8 +down 9 +up 4 +down 8 +down 3 +down 3 +down 2 +forward 1 +forward 4 +down 5 +up 7 +forward 1 +down 1 +down 6 +down 9 +down 5 +forward 5 +forward 6 +forward 4 +down 2 +down 8 +forward 3 +down 5 +forward 6 +up 7 +up 2 +forward 2 +forward 4 +forward 1 +up 8 +up 9 +down 8 +up 8 +up 6 +up 2 +down 7 +up 3 +forward 8 +forward 5 +down 8 +down 8 +forward 5 +down 3 +down 4 +down 5 +down 2 +up 7 +down 1 +forward 9 +forward 9 +up 6 +down 5 +up 1 +down 8 +up 1 +forward 2 +down 4 +down 5 +down 2 +up 7 +forward 9 +up 8 +down 3 +up 6 +down 2 +up 2 +forward 3 +up 1 +up 1 +forward 9 +down 3 +down 5 +up 7 +down 1 +up 5 +up 5 +up 7 +down 9 +down 3 +up 3 +forward 9 +forward 7 +up 9 +down 3 +down 2 +up 8 +forward 5 +forward 9 +down 5 +down 2 +down 9 +down 6 +down 6 +up 3 +forward 3 +up 6 +forward 9 +down 3 +down 2 +forward 6 +down 7 +down 2 +down 8 +forward 2 +forward 8 +forward 4 +forward 1 +up 6 +forward 2 +forward 8 +forward 5 +forward 4 +up 1 +down 8 +up 3 +forward 8 +forward 4 +up 6 +down 2 +forward 6 +forward 9 +down 2 +up 3 +forward 8 +down 6 +up 4 +down 7 +up 3 +forward 4 +down 8 +forward 5 +forward 1 +down 3 +forward 1 +forward 8 +down 3 +forward 4 +forward 2 +up 7 +forward 6 +forward 8 +forward 6 +down 5 +down 2 +down 8 +down 2 +down 9 +down 5 +down 3 +down 8 +up 1 +forward 1 +up 5 +up 1 +up 6 +up 3 +up 2 +forward 5 +forward 6 +down 4 +up 3 +up 9 +down 1 +forward 1 +forward 6 +down 9 +forward 5 +forward 3 +forward 2 +down 7 +down 5 +down 8 +forward 9 +forward 4 +down 2 +up 9 +down 1 +forward 5 +forward 1 +forward 9 +down 8 +forward 5 +down 8 +forward 3 +up 4 +down 7 +down 9 +forward 3 +forward 7 +down 9 +up 5 +up 7 +forward 8 +down 3 +down 9 +down 1 +forward 3 +down 1 +up 9 +forward 6 +down 9 +forward 1 +forward 5 +down 6 +up 7 +forward 9 +down 9 +forward 6 +down 3 +up 6 +up 2 +up 1 +up 9 +down 9 +forward 4 +forward 6 +up 7 +forward 2 +down 5 +forward 7 +down 5 +forward 4 +down 8 +up 3 +down 1 +forward 5 +down 5 +up 6 +down 6 +forward 4 +down 8 +down 6 +down 7 +down 9 +down 4 +forward 5 +down 8 +down 7 +forward 3 +forward 5 +up 8 +down 4 +down 1 +up 6 +up 9 +down 2 +down 2 +up 1 +up 7 +forward 1 +down 1 +down 4 +down 8 +forward 1 +forward 3 +down 8 +up 9 +forward 1 +down 6 +forward 3 +down 9 +down 2 +up 8 +forward 5 +up 1 +forward 9 +down 4 +forward 3 +up 6 +up 4 +down 9 +down 8 +down 3 +forward 6 +forward 6 +down 1 +down 2 +down 2 +down 2 +up 7 +down 2 +forward 9 +down 3 +up 5 +forward 9 +up 5 +forward 1 +down 1 +forward 7 +down 8 +down 9 +down 1 +forward 8 +up 1 +forward 8 +down 1 +forward 9 +down 8 +down 2 +forward 4 +up 2 +down 7 +forward 6 +forward 6 +forward 4 +up 8 +up 2 +down 8 +up 7 +forward 2 +forward 6 +forward 3 +up 5 +forward 9 +down 9 +forward 6 +up 2 +down 6 +forward 4 +forward 5 +down 3 +up 2 +forward 3 +forward 2 +up 7 +down 1 +up 1 +up 8 +down 4 +forward 7 +forward 2 +up 2 +down 4 +forward 4 +forward 2 +forward 2 +down 8 +down 2 +down 2 +forward 6 +up 2 +up 9 +down 1 +down 7 +forward 9 +forward 4 +up 8 +forward 2 +forward 5 +down 3 +down 6 +down 4 +forward 7 +up 1 +forward 7 +down 8 +up 2 +down 8 +forward 6 +down 3 +up 9 +up 6 +up 6 +forward 5 +forward 1 +forward 3 +forward 3 +down 7 +down 3 +forward 8 +forward 2 +down 7 +down 1 +up 4 +forward 2 +forward 1 +up 6 +forward 9 +up 4 +forward 5 +up 4 +forward 3 +down 1 +forward 6 +forward 2 +down 3 +down 7 +forward 7 +down 4 +forward 6 +down 8 +forward 5 +up 9 +up 9 +forward 4 +forward 8 +down 6 +down 7 +forward 1 +up 4 +forward 9 +forward 7 +forward 2 +forward 6 +up 4 +forward 4 +down 3 +down 2 +up 4 +forward 4 +forward 3 +up 8 +forward 8 +down 9 +forward 4 +forward 6 +forward 7 +down 5 +forward 6 +down 3 +up 2 +down 4 +forward 1 +up 3 +forward 4 +down 7 +down 9 +down 6 +up 7 +down 2 +down 5 +forward 7 +up 6 +down 2 +forward 4 +down 9 +up 8 +forward 6 +down 4 +down 3 +up 9 +down 6 +down 9 +up 3 +down 2 +forward 3 +down 1 +forward 1 +forward 5 +down 7 +forward 2 +down 8 +down 8 +down 7 +forward 5 +forward 9 +forward 9 +forward 2 +up 5 +down 2 +forward 3 +down 2 +forward 9 +up 1 +forward 1 +up 6 +down 1 +forward 4 +down 5 +forward 2 +up 7 +up 4 +up 3 +forward 6 +down 5 +forward 6 +down 6 +forward 6 +down 2 +down 8 +up 9 +forward 2 +down 4 +forward 4 +forward 9 +up 9 +down 4 +up 7 +down 6 +up 2 +up 7 +down 5 +down 6 +down 8 +down 1 +forward 6 +forward 6 +forward 7 +down 3 +forward 3 +forward 8 +forward 1 +forward 2 +down 8 +forward 6 +down 6 +forward 8 +forward 3 +forward 6 +down 4 +down 2 +forward 4 +forward 6 +forward 8 +down 3 +down 3 +down 4 +up 1 +forward 3 +down 2 +down 3 +down 9 +down 3 +down 8 +down 1 +down 6 +forward 5 +down 5 +down 7 +up 3 +forward 5 +down 7 +down 7 +forward 6 +down 6 +up 6 +forward 2 +up 9 +down 3 +forward 3 +forward 4 +up 6 +down 7 +forward 1 +up 8 +forward 3 +down 1 +forward 6 +forward 7 +down 5 +down 6 +down 8 +up 6 +down 4 +down 5 +down 1 +up 1 +up 9 +up 4 +forward 2 +down 5 +down 7 +forward 5 +forward 2 +up 1 +down 7 +up 6 +forward 5 +down 5 +down 9 +up 4 +down 6 +forward 8 +down 5 +forward 6 +forward 1 +forward 5 +forward 4 +down 2 +down 7 +up 7 +down 9 +down 7 +up 4 +down 3 +up 9 +forward 3 +up 1 +up 7 +forward 4 +forward 6 +up 2 +forward 2 +forward 4 +down 6 +forward 4 +forward 6 +forward 9 +forward 4 +forward 8 +up 9 +up 4 +forward 1 +forward 3 +down 5 +down 4 +up 6 +up 2 +forward 9 +up 9 +up 2 +forward 6 +down 5 +up 7 +forward 3 +forward 4 +down 5 +up 8 +forward 7 +forward 3 +up 5 +down 7 +down 6 +forward 9 +up 2 +forward 5 +down 2 +down 9 +forward 1 +down 4 +forward 3 +up 9 +down 2 +up 5 +down 8 +forward 1 +up 9 +up 7 +up 1 +forward 7 +forward 1 +forward 7 +down 2 +up 6 +forward 6 +down 1 +forward 1 +down 7 +down 9 +forward 9 +up 3 +forward 3 +down 1 +forward 1 +forward 9 +down 7 +forward 2 +down 7 +forward 2 +forward 4 +down 5 +down 5 +forward 5 +down 9 +down 4 +forward 3 +down 4 +down 3 +down 3 +down 2 +forward 1 +up 8 +forward 1 +forward 5 +forward 1 +forward 2 +forward 4 +forward 6 +forward 8 +forward 7 +down 5 +up 6 +forward 8 +down 9 +up 3 +up 2 +down 4 +up 1 +forward 6 +up 6 +forward 9 +forward 3 +down 3 +down 5 +forward 6 +down 6 +down 4 +up 6 +forward 4 +up 8 +down 4 +down 8 +down 3 +down 1 +down 6 +down 7 +down 8 +down 2 +down 5 +forward 4 +forward 6 +forward 7 +down 1 +down 5 +forward 9 +down 6 +forward 6 +forward 7 +forward 4 +forward 2 +forward 2 +up 6 +forward 9 +up 6 +down 1 +forward 4 +down 2 +up 3 +forward 5 +up 1 +forward 4 +forward 4 +up 4 +down 7 +down 5 +up 4 +forward 5 +up 8 +up 4 +up 2 +up 8 +forward 6 +down 9 +down 8 +down 4 +down 4 +up 9 +forward 4 +forward 5 +forward 4 +forward 9 +down 7 +down 4 +down 3 +down 7 +forward 3 +forward 1 +down 1 +forward 5 +forward 6 +down 1 +forward 3 +down 7 +up 4 +forward 4 +forward 7 +up 1 +up 9 +down 7 +down 5 +up 8 +forward 3 +forward 5 +forward 3 +down 6 +down 1 +down 9 +up 9 +forward 5 +down 1 +down 1 +down 8 +forward 8 +up 2 +down 1 +down 2 +down 6 +down 3 +forward 7 +forward 1 +down 4 +up 9 +down 7 +down 6 +down 9 +forward 5 +forward 4 +forward 9 +up 7 +forward 5 +down 6 +forward 9 +forward 2 +forward 8 +up 9 +forward 2 +down 8 +up 8 +down 8 +down 8 +forward 2 +down 1 +forward 5 +down 4 +up 2 +forward 8 +up 4 +up 8 +forward 4 +forward 6 +forward 6 +forward 3 +forward 5 +forward 4 +down 6 +up 6 +forward 7 +up 3 +down 1 +down 1 +down 9 +forward 6 +down 9 +forward 2 +down 7 +down 2 +down 5 +forward 3 +down 4 +down 8 +down 3 +forward 6 +up 9 +forward 1 +forward 4 +forward 8 +up 9 +down 5 +up 5 +up 9 +forward 6 +up 2 +forward 7 +up 5 +forward 8 +forward 6 +down 2 +down 7 +up 8 +up 3 +forward 4 +forward 1 +down 8 +down 4 +forward 6 +forward 6 +up 6 +up 3 +up 7 +forward 6 +up 2 +down 8 +forward 1 +forward 3 +down 3 +forward 8 +forward 5 +forward 3 +forward 9 +down 6 +forward 9 +up 7 +down 3 +down 8 +forward 4 +down 9 +up 8 +up 1 +forward 2 +down 2 +forward 1 +down 8 +forward 7 +up 4 +down 1 +forward 8 +down 2 +forward 3 +forward 9 +down 7 +up 4 +up 2 +forward 1 +down 2 +up 8 +forward 4 +down 1 +forward 5 +forward 1 +down 5 +forward 1 +up 2 +forward 6 +down 5 +down 8 +down 3 +down 2 +forward 1 +forward 5 +down 8 +down 1 +forward 5 +down 7 +down 4 +forward 5 +down 1 +down 1 +forward 9 +down 7 +up 9 +down 6 +forward 4 +up 8 +forward 6 +forward 1 +up 6 +forward 3 +down 3 +up 6 +forward 2 +down 2 +forward 3 +down 2 +up 4 +down 6 +forward 4 +down 6 +down 4 +up 2 +down 2 +up 5 +up 2 +down 9 +down 5 +forward 1 +down 6 +forward 4 +forward 9 +down 1 +down 9 +forward 3 +forward 8 +forward 9 +down 4 +down 1 +up 1 +up 7 +down 5 +down 3 +down 2 +down 8 +forward 5 +up 1 +down 4 +down 8 +down 8 +forward 1 +down 5 +forward 7 +forward 9 +forward 5 +forward 2 +down 9 +up 1 +down 6 +down 5 +forward 4 +forward 3 +down 4 +down 3 +down 8 +forward 6 +down 2 +forward 7 +down 7 +forward 8 +forward 1 +forward 7 +forward 8 +forward 6 diff --git a/input/03_input.txt b/input/03_input.txt new file mode 100644 index 0000000..b24f932 --- /dev/null +++ b/input/03_input.txt @@ -0,0 +1,1000 @@ +001000010101 +010010111110 +001010110111 +001001011101 +001001010011 +001111100111 +100000000101 +010001011011 +000101011010 +101100010011 +111011101101 +101100100110 +000101111011 +101111000011 +001100000101 +010011111000 +011001001111 +101100100011 +000110010011 +011010111101 +010011101010 +111101111000 +110111011110 +101111100010 +101000100011 +011000011001 +111101011101 +010001101111 +000010010010 +101100010110 +001001010010 +010000000011 +110000000000 +101111101000 +001111010110 +010011101011 +100001011111 +111001110100 +101000010000 +110101001011 +010000110101 +001110000110 +011000000010 +101110010001 +101010000010 +011101100110 +011111011100 +000000111001 +010110001010 +010001111010 +110111100110 +101011000100 +101100010101 +000011111101 +101011111001 +011000001001 +000001001001 +100100101010 +101110001011 +111101110000 +111101101100 +010110100110 +011110001110 +001110011100 +100101010010 +100000001111 +000010111111 +101000011100 +010100001000 +010001010010 +101100111111 +010101010101 +010011000111 +111010010101 +111010111111 +100001011110 +100111110111 +010010111001 +110100100110 +111011110110 +111110011111 +011011111101 +100011011100 +000100101110 +000110111110 +111110010111 +101100110110 +010011010111 +101101001110 +010100010010 +111101010111 +111000100001 +100011010000 +111001110110 +100100010100 +011010001101 +000110010111 +001010101001 +011000010011 +010100011100 +110001111101 +111001110000 +111100110101 +111000101111 +000010011111 +011100110110 +010111101000 +011001110011 +100101110101 +011001010110 +010101100110 +000111001000 +101110001111 +110100000110 +000111011111 +010101111101 +111010111011 +100001101111 +101110000110 +111111111010 +110111000010 +100010101111 +100111010010 +010000001110 +100110000011 +110101011100 +010100100100 +001100011100 +001100010000 +100000101010 +101111010100 +001100001000 +111100110100 +011101111010 +001011000010 +110000010101 +001011001111 +000111011100 +101101101110 +110001011111 +111111011101 +100001001000 +010001110110 +000011101010 +100011101000 +000110111100 +011100111100 +101100101000 +111110001100 +100010010100 +011011000011 +010001101101 +001110011010 +011111101111 +000010001110 +010100101111 +010010011010 +000010010000 +101000001000 +011010010111 +110111111110 +111101001000 +101100110111 +001101000000 +011010011001 +111000100000 +000000010101 +110000011011 +111100101000 +000111010110 +110000000010 +111000100011 +110110001100 +011110000000 +111011011111 +101001000001 +000010010110 +011010101101 +110001100111 +100101110011 +000110001011 +000110011111 +001100100010 +001011000111 +001000010110 +001010011000 +011001101110 +001010000100 +011010100111 +111010100110 +010100000010 +010011100100 +011101010110 +100101000000 +111100010110 +001101101011 +001100000111 +001011010001 +011101110010 +000011111000 +000000000111 +111111110011 +000101111000 +110001010111 +010001010001 +001011000000 +101110111011 +101111100001 +010110000010 +011011101000 +001100110101 +101111101011 +100001010111 +010110110110 +011101000101 +110001110111 +010101001101 +100111010011 +010011110110 +010101110001 +011011110011 +110011101001 +010001111011 +110110000000 +100001000110 +011000101111 +001100110000 +001110010100 +111011100100 +000011100010 +101010001101 +101011111111 +100001111110 +011011100011 +010011111011 +000101001000 +111101010110 +111101000111 +111111100001 +100100100000 +010000111110 +110110000101 +001110011011 +010100101101 +010100101110 +100011010100 +001001110101 +011011111000 +111111001101 +011001110101 +011001111111 +010000010100 +010110001001 +100101000010 +111101111001 +010111111010 +110011111000 +000100111000 +110101100101 +010100001101 +000111011110 +011110000111 +011000001101 +110011000010 +010010100001 +000001101100 +010000011100 +100010001111 +111010010100 +001101111000 +100111001111 +111011101100 +010011111110 +111010001111 +100111110110 +100101110000 +001001100110 +001010011001 +010100110000 +100011101101 +100000001101 +110010000111 +101001011001 +101010010111 +101011101110 +011111101011 +110100110110 +000101010000 +011101100011 +100011100101 +000001000111 +011011110010 +010001001010 +001001101100 +100101011100 +111110100100 +101101111000 +101000101110 +110101011000 +101001111100 +011001111000 +110110101100 +100010000010 +100110100000 +011010010110 +100011100000 +111100000000 +001111111110 +010000010010 +100110000100 +100000011010 +010010011111 +011001110001 +001110100010 +101011100000 +011011011101 +011100010011 +011000111011 +111010010111 +000011011101 +000100000001 +110000001011 +111000011111 +111110111111 +011111110111 +000011000010 +100111011101 +010001010100 +111100100101 +111110100010 +010101110100 +001111111100 +011000100010 +011010111011 +100010111110 +011100000010 +011111111110 +110001001111 +011001000111 +101000000110 +010010001100 +001100010111 +111110101010 +110011011100 +110011011010 +110010011101 +101001111111 +111001111001 +101101100101 +100100111010 +010110101100 +100100100100 +110110110001 +000010001101 +101001001100 +010101010001 +111001001000 +001000110110 +101100000101 +010010100111 +101001010010 +011000001110 +101101101000 +110011110000 +111110011100 +010000011111 +001001111111 +001110110111 +100110100110 +011101100010 +101101010011 +001010101110 +101001100111 +110110101101 +101100000000 +100110101001 +100110101010 +100010110101 +101101010100 +001110111111 +101110101110 +111011001110 +011000110110 +000011111010 +011111100100 +111001100110 +010110010101 +001101011001 +011010010101 +110100101001 +010100100111 +111001100111 +111110101011 +000100110101 +010000100011 +000011100110 +010111101111 +010111001111 +001011110000 +110110010111 +010000100000 +011011010000 +011101100100 +111110010110 +000110100000 +111010101011 +100000110001 +001001111001 +000001010111 +011011100111 +010100010100 +011101101101 +000000101110 +100110111011 +001110011001 +000111001101 +011010011111 +100011111010 +010110110111 +000101111111 +100000001110 +010100000001 +010111100010 +100000110101 +000110100100 +100111100111 +101011010111 +100100110110 +111111000010 +101110101011 +111100000110 +010111110001 +100111000100 +111001011101 +000011010011 +101111010110 +011000101100 +111000000011 +111101101001 +101010111000 +010010110001 +010110101001 +100110001000 +011100111001 +010111011100 +001101110100 +010100100010 +111111111100 +010011000110 +000110100111 +011011011011 +111111011000 +000100010001 +011100001011 +100110010110 +010011110000 +010001111110 +000000011100 +111000001110 +000111000101 +011100011011 +000111101101 +010101111010 +100001111111 +011101101100 +000100000100 +100010000110 +101111110100 +011100010000 +110011100110 +011011000111 +111111000101 +101010001001 +010000111100 +111001101001 +000011100011 +101000011101 +000000101000 +111011110010 +001010111100 +101000100001 +011000001100 +001011111101 +101110100101 +010001110001 +000110101100 +001000010011 +011001011110 +011011101001 +000010111101 +011001111010 +101011000000 +100101011011 +100100010101 +011010000010 +111100110000 +010101000001 +101111100000 +100110100100 +010000101111 +010001100100 +000100011010 +110001011100 +100111100011 +101101101100 +101111011001 +010100010011 +001010001010 +011100011111 +110010111000 +011100111000 +100101000101 +110111110000 +110111010110 +111000111100 +110000011110 +110111100011 +010000010000 +101110111100 +100111001001 +010011011111 +100010110010 +001011010110 +110011000100 +111011001000 +101011100010 +001110001001 +010111001000 +110100110101 +101110101111 +111001111011 +010000011000 +110100000100 +100100110000 +010000100110 +100011001101 +011001100110 +010110000001 +111110001111 +000011111111 +110000000110 +000111010111 +010011111100 +001001000101 +100101100110 +000101000010 +101011100001 +100111010110 +111100101001 +000011110001 +101001100101 +110010000011 +001110100001 +110101101100 +111100110010 +100111100100 +011110011100 +011000011111 +000100100100 +011011100001 +100001011001 +010111111000 +001000011110 +111010010001 +111111001100 +011000110101 +001010100110 +110010000001 +011111000101 +001110000011 +110001110110 +000000011010 +000010000000 +001101011101 +110110011101 +000011011100 +110011000011 +100111010111 +100111000111 +110010110001 +100011110101 +101010101000 +111000001101 +111010100100 +110001000000 +011111001101 +001110010011 +110111011101 +110111101000 +100000111111 +101110111000 +000111111101 +101001111101 +100000110011 +011100011110 +111100110110 +111100001101 +101011011101 +001000101010 +011100100101 +100001001001 +100110011101 +110111110111 +101101100000 +001010100000 +010000111001 +000100110111 +000101100000 +110000010001 +101111111000 +110001011110 +001110010111 +110100100011 +111111101101 +000001100101 +100100110001 +011100001001 +111011000111 +100001001100 +000001111000 +011011111011 +001111100110 +001111111000 +000111110000 +001001000010 +110101000001 +001001110011 +110110010010 +010001000001 +001100011110 +001011100001 +000011110100 +100000100011 +110011100011 +110111100000 +010011110100 +110000001100 +011111111001 +110001001110 +110011001001 +001010101000 +000111110100 +100001000101 +111000110111 +010010001011 +000111011101 +010110001110 +011010001010 +010000001011 +011111110100 +111000010100 +001000011000 +101001111010 +110000001111 +010100101010 +000100011001 +100011110111 +001111101011 +000010101010 +010111110000 +111111000000 +001100000110 +111000111010 +010100100110 +001000010001 +000001111110 +000010111010 +110010011100 +001110000100 +010000110000 +011101111100 +011110101001 +111100010100 +101011111100 +001001001101 +000111110101 +010101110000 +010100001011 +010100011101 +011100111101 +010010000011 +010010111100 +100001100011 +010111010000 +010100110001 +100100010111 +010100011000 +111011111000 +110011010010 +100010100001 +111110111100 +000110101001 +110100001010 +001101100000 +111110001110 +011010100101 +001110111100 +101001100100 +000110110110 +000111011000 +000000010111 +110101011010 +110100010011 +101011010100 +101100010100 +110001110011 +111100100010 +011000001111 +010000111011 +011010100000 +010000000111 +000000001111 +000101000000 +110011100111 +000011111100 +011010001100 +000111000100 +101110011100 +011011011111 +110000100000 +101001000111 +101111111010 +111011011001 +111100010011 +100011000001 +011101100000 +111101001001 +101110101010 +001100101111 +001101001001 +010101001110 +101100110010 +000101111001 +101010101101 +111001010000 +001011111000 +000111110001 +100010001010 +000101100100 +010100111100 +101110001101 +100010010011 +000011010010 +100011110011 +110001101000 +011101011001 +100101010101 +010111011001 +110001010001 +011111011001 +010111000000 +011010110010 +110110100110 +001011011001 +100101111001 +000100100011 +000111001001 +000010000001 +100111000101 +010110111110 +111010101100 +110010100011 +101010001000 +111110100001 +100000101111 +110001111110 +010001101110 +010001001111 +101111000001 +101101010010 +001101001111 +100111011001 +010111101101 +111111001111 +110110111000 +011000000011 +000100111101 +001000000100 +101000100010 +011101001100 +100001001011 +100011100011 +001110110000 +110100001111 +111001111100 +001010001011 +100000000111 +101101110011 +010110011101 +111101011110 +100100100111 +011001001101 +010110110100 +000000111110 +001101110000 +101110000100 +100010111000 +110101010011 +101101001001 +100010000011 +011000000100 +001101010110 +010100011001 +100011101001 +011001010010 +010001100111 +111100011110 +010101110111 +101100110101 +100101011111 +100101101100 +101000001110 +011110110011 +011011001100 +101000111101 +001011110111 +100000010101 +111001111101 +111011010001 +111101001111 +010010011110 +000110010001 +111000000110 +110010101010 +001110110001 +100111011000 +111101001010 +011100101110 +001100100000 +100110010101 +011110111111 +111110110101 +000000111100 +101010011001 +100011110001 +001011011100 +101111100110 +001010100010 +001111000110 +100100101110 +101011001100 +010111100110 +110100100100 +100111001000 +010001011110 +110100111101 +101011110000 +110011111001 +000001100010 +011010101001 +010001111001 +001110100000 +101111011011 +010010100100 +100000001010 +010110011111 +010010100101 +100000010001 +111110111000 +000101110100 +010100000101 +101101010001 +001000111110 +011111101101 +110011010101 +110101111110 +011110101110 +110111101011 +111111111000 +011100001000 +011000000101 +011011110111 +011000001010 +001011010011 +101001010110 +111000110011 +111110011011 +110111011000 +101101011110 +000110010000 +111101101101 +001100011101 +110110010101 +100011011010 +010011001000 +100010111010 +111110010001 +001001011010 +010101001011 +100110001101 +000100101000 +001101111011 +110110010100 +011010000101 +011000010000 +110101110011 +100110110001 +000111100111 +000001010101 +001011110100 +010101000101 +110110010000 +101010111110 +111010011100 +010000001010 +001001100111 +000000100001 +110100001110 +100110011111 +111011110000 +000001110010 +111101111101 +010101100001 +100100000101 +100000010010 +100000001100 +011000011010 +000010010111 +110010100111 +101010000111 +001010010011 +110101001000 +101100000110 +001110101100 +001101110001 +101100001010 +111111110100 +010101010100 +101110111111 +000001111010 +110110000111 +000100000000 +011000010100 +011100011010 +100011111100 +001011011010 +111101101011 +011101000100 +011111010011 +111011010010 +110000001110 +010101010011 +100010110111 +111111000011 +001110001000 +110001000010 +001010111101 +000000101010 +100011101111 +100001000001 +000000110010 +101100011011 +011001000101 +111010110101 +010100111111 +100011111101 +010010110111 +110100000101 +101000100100 +010100111001 +100001000111 +111101000010 +000100000111 +100000011101 +101101001101 +000111101000 +011010010001 +001101011010 +110001011011 +000000011111 +111001000100 +100111101110 +110010010010 +101010101111 +000100001100 +000111000000 +001001000100 +010101110011 +001101111111 +111001010001 +100110101101 +100010011100 +010101010010 +011010101011 +000011110011 +101001001000 +101111100100 +011011001110 +001110010001 +110011001100 +011000111001 +110111000111 +100100001101 +100101111100 +101110111101 +001011111010 +100110010011 +100111111011 +000010010011 +100111101100 diff --git a/src/02/Day02.cpp b/src/02/Day02.cpp index cb1c2ad..88d736d 100644 --- a/src/02/Day02.cpp +++ b/src/02/Day02.cpp @@ -2,5 +2,5 @@ #include "Day02.h" int Day02::run() { - return 1; + return 0; } diff --git a/src/03/Day03.cpp b/src/03/Day03.cpp index 6e1e7e0..7734c40 100644 --- a/src/03/Day03.cpp +++ b/src/03/Day03.cpp @@ -2,5 +2,5 @@ #include "Day03.h" int Day03::run() { - return 1; + return 0; } diff --git a/src/main.cpp b/src/main.cpp index 42e7e89..54b5946 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,43 +1,58 @@ #include #include -#include #include #include #include "days.h" -//#include +#include -std::vector getInput(int day){ +std::vector getInput(int day, std::string key){ + std::vector result; char dayStrPadded[3]; sprintf(dayStrPadded, "%02u", day); std::string localFilePath = "input/" + std::string(dayStrPadded) + "_input.txt"; if (!std::filesystem::exists({localFilePath})){ + if (key.empty()) + return result; std::string dayStr = std::to_string(day); std::string url = "https://adventofcode.com/2021/day/" + dayStr + "/input"; - std::string key = "sdfsd"; - std::string cookie = "session=" + key; std::cout << "Input does not exist. Fetching from " + url << std::endl; - //cpr::Response res = cpr::Get(cpr::Url {url}, cpr::Header{{"Cookie", cookie}}); - //std::cout << res.text << std::endl; + cpr::Response res = cpr::Get(cpr::Url {url}, cpr::Cookies{{"session", key}}); + std::string content = res.text; + std::ofstream file(localFilePath); + file << content; + file.close(); } - std::fstream file; - file.open(localFilePath, std::ios::in); + std::ifstream file(localFilePath); - std::vector result; std::string line; while (std::getline(file, line)) result.push_back(line); + file.close(); + return result; } +std::string getSessionKey(){ + std::string key; + std::ifstream file("session"); + if (!file.good()) + return ""; + file >> key; + file.close(); + return key; +} + int main(int argc, char *argv[]) { + std::string key = getSessionKey(); + for (int i = 1; i < argc; i++){ int dayNum = std::stoi(argv[i]); - std::vector input = getInput(dayNum); + std::vector input = getInput(dayNum, key); auto day = getDay(dayNum, input); int code = day->run(); if (code != 0)