diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index 812c38c..0000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,17 +0,0 @@ -repos: - - repo: https://github.com/LiquidFun/aoc_tiles - rev: 0.6.2 - hooks: - - id: aoc-tiles - # Optionally use these arguments. Auto add tiles to git adds the tiles to git, - # possibly amends your commit by creating the tile images and updating the README. - # Language sorting shows the preference of the order of the languages to use. - # Exclude paterns are globs which can be used to exclude files when creating - # the tiles. See the customization section in the README for more flags. - # Simply remove the comments (#) below for args and the flags you want. - args: - - --auto-add-tiles-to-git=add - - --contrast-improvement-type=dark - - --overwrite-year=2024 - # - --language-sorting=py,jl,kt,rs - # - --exclude-patterns=2021/*/*.apl,2021/*/*.py,2021/*/*.cpp \ No newline at end of file diff --git a/README.md b/README.md index 7618388..89f2022 100644 --- a/README.md +++ b/README.md @@ -1,29 +1 @@ -# aoc_template - -Template for yearly AoC-Repositories - -# Usage - -- Clone repository (or use as template in gitea) -- Run `pip install -r requirements.txt` -- Update main.py and start_day.py: set YEAR (near the top) to the respective year -- Create a file named ".session" next to your main.py containing the contents of your aoc-session cookie - -On a given day, just call `./start_day.py -d ` - -# Not using PyCharm? - -Just comment out the call() to CHARMS near the end of start_day.py - -# Want to add AoC-Tiles? - -Author: https://github.com/LiquidFun/aoc_tiles - -- Run `pre-commit install --hook-type post-commit` -- In .pre-commit-config.yaml change the --overwrite-year option as needed -- Optional: Copy your .session file to session.cookie -- For more options see: https://github.com/LiquidFun/aoc_tiles/blob/main/aoc_tiles/config.py - -Tiles will be added to this README between the following lines: - - \ No newline at end of file +# Codyssi 2024 Summer at the lab \ No newline at end of file diff --git a/inputs/input_1 b/inputs/input_1 new file mode 100644 index 0000000..1fed662 --- /dev/null +++ b/inputs/input_1 @@ -0,0 +1,300 @@ +975111 +18596 +713228 +671650 +67749 +729790 +885801 +369280 +841815 +834669 +322560 +437161 +217654 +52511 +757955 +321003 +869012 +375292 +511149 +708403 +782105 +152717 +934212 +529360 +292030 +252557 +230524 +687408 +302816 +651070 +911992 +158047 +291326 +556181 +522645 +293048 +219479 +213427 +975759 +321260 +311942 +123254 +576114 +164684 +59923 +419430 +460887 +577187 +250388 +686298 +176035 +921358 +256059 +675970 +454643 +547049 +859453 +184506 +96614 +885342 +803750 +138663 +274972 +378022 +209099 +285354 +273961 +38849 +406771 +504648 +761484 +837872 +550213 +259077 +875786 +370998 +612020 +412547 +937848 +761247 +787950 +100806 +790331 +570149 +282891 +408818 +619296 +685840 +75147 +297309 +718453 +367875 +681499 +435472 +735469 +367272 +142703 +217073 +472334 +729257 +920732 +939803 +382931 +786066 +609587 +538318 +203473 +927380 +967886 +784324 +946034 +32542 +66160 +976803 +247934 +492980 +742341 +386502 +141535 +387833 +511293 +528644 +568488 +741227 +733323 +759807 +406292 +232730 +814940 +829604 +789955 +659988 +132250 +237880 +502646 +229614 +340932 +868928 +122228 +748673 +637434 +545393 +328224 +935634 +419497 +772366 +184786 +232927 +937873 +781154 +314958 +553111 +571043 +560870 +947585 +868959 +78817 +904649 +494556 +234465 +160618 +41757 +641744 +839712 +989953 +961793 +291350 +559376 +431223 +281038 +248835 +807529 +747005 +972971 +431371 +967642 +852677 +931053 +963479 +368983 +645300 +374745 +772683 +713330 +524165 +570340 +617088 +487453 +102928 +300945 +513266 +99771 +42442 +731626 +348554 +310501 +495491 +332155 +282685 +735132 +517288 +784788 +219651 +820997 +495224 +886953 +986013 +89425 +249861 +946566 +273913 +207020 +902858 +583221 +266495 +535868 +404565 +631679 +344245 +898758 +699902 +852500 +975089 +99003 +509602 +179860 +252666 +413846 +767809 +837612 +818377 +483901 +95275 +815669 +699616 +301047 +400501 +381742 +166896 +426537 +720747 +471135 +629915 +193041 +651306 +778147 +674128 +271683 +449470 +844351 +213296 +226204 +68504 +824135 +802709 +774891 +419363 +236561 +134462 +255391 +818961 +802028 +697914 +833161 +502284 +811185 +63681 +415304 +51907 +686255 +683689 +593253 +269234 +346633 +87165 +29620 +236080 +204132 +147119 +116572 +786769 +998161 +191293 +83665 +254773 +592213 +823350 +179090 +335052 +778660 +184255 +618199 +600995 +82651 +387343 +576598 +585332 +403237 +996242 +174047 \ No newline at end of file diff --git a/inputs/input_2 b/inputs/input_2 new file mode 100644 index 0000000..6ee8b4c --- /dev/null +++ b/inputs/input_2 @@ -0,0 +1,512 @@ +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +FALSE +FALSE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +FALSE +FALSE +FALSE +FALSE +FALSE +FALSE +FALSE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +FALSE +TRUE +FALSE +TRUE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +FALSE +TRUE +TRUE +FALSE +FALSE +TRUE +FALSE +TRUE +TRUE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +FALSE +FALSE +TRUE +FALSE +FALSE +TRUE +FALSE +TRUE +FALSE +TRUE +TRUE +TRUE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +TRUE +TRUE +FALSE +TRUE +FALSE +FALSE +FALSE +FALSE +TRUE +FALSE +TRUE +FALSE +TRUE +FALSE +FALSE +TRUE +FALSE +FALSE +FALSE +FALSE +TRUE +TRUE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +TRUE +TRUE +TRUE +FALSE +FALSE +FALSE +TRUE +FALSE +FALSE +FALSE +TRUE +TRUE +FALSE +FALSE +FALSE +FALSE +TRUE +FALSE +TRUE +FALSE +FALSE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +FALSE +TRUE +TRUE +FALSE +FALSE +TRUE +TRUE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +FALSE +FALSE +TRUE +FALSE +FALSE +FALSE +TRUE +TRUE +FALSE +TRUE +FALSE +FALSE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +TRUE +FALSE +FALSE +FALSE +TRUE +FALSE +TRUE +TRUE +TRUE +TRUE +TRUE +FALSE +TRUE +FALSE +TRUE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +FALSE +TRUE +FALSE +FALSE +FALSE +FALSE +TRUE +TRUE +TRUE +FALSE +TRUE +FALSE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +FALSE +FALSE +TRUE +FALSE +FALSE +FALSE +TRUE +TRUE +TRUE +FALSE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +FALSE +TRUE +TRUE +FALSE +FALSE +FALSE +TRUE +FALSE +FALSE +FALSE +FALSE +FALSE +FALSE +FALSE +TRUE +TRUE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +TRUE +FALSE +FALSE +FALSE +TRUE +FALSE +TRUE +TRUE +TRUE +FALSE +FALSE +TRUE +TRUE +FALSE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +TRUE +FALSE +TRUE +FALSE +FALSE +TRUE +TRUE +FALSE +TRUE +TRUE +FALSE +TRUE +TRUE +FALSE +FALSE +FALSE +FALSE +FALSE +FALSE +FALSE +TRUE +TRUE +FALSE +FALSE +FALSE +FALSE +TRUE +TRUE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +TRUE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +TRUE +TRUE +FALSE +FALSE +TRUE +FALSE +TRUE +FALSE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +TRUE +FALSE +FALSE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +TRUE +FALSE +FALSE +FALSE +TRUE +TRUE +FALSE +TRUE +FALSE +TRUE +FALSE +FALSE +FALSE +TRUE +TRUE +FALSE +TRUE +TRUE +FALSE +FALSE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +FALSE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +TRUE +FALSE +TRUE +TRUE +TRUE +FALSE +FALSE +FALSE +FALSE +FALSE +TRUE +TRUE +FALSE +TRUE +FALSE +TRUE +FALSE +FALSE +TRUE +TRUE +FALSE +FALSE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +TRUE +TRUE +FALSE +TRUE +TRUE +TRUE +FALSE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +FALSE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +TRUE +FALSE +TRUE +TRUE +FALSE +TRUE +TRUE +FALSE +FALSE +TRUE +TRUE +TRUE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +TRUE +TRUE +TRUE +TRUE +TRUE +TRUE +TRUE +FALSE +TRUE +FALSE +FALSE +FALSE +FALSE +FALSE +FALSE +FALSE +TRUE +TRUE +FALSE +FALSE +TRUE +FALSE +TRUE +TRUE +TRUE +TRUE +FALSE +FALSE +TRUE \ No newline at end of file diff --git a/inputs/input_3 b/inputs/input_3 new file mode 100644 index 0000000..08b11ec --- /dev/null +++ b/inputs/input_3 @@ -0,0 +1,800 @@ +2CB7592A 16 +168724B4 16 +475421364 8 +646755721 10 +3610564350 8 +3255266555 8 +2350325662 8 +3615426200 8 +11111000011110001110101100011 2 +428688039 10 +579245521 10 +934971368 10 +1EA10480 16 +3752166352 8 +5141743623 8 +11111010110110111111100000111 2 +100000101000100010100000110010 2 +13DF540D 16 +1013440153 8 +3626366450 8 +934473707 10 +16159D89 16 +238754D1 16 +1010100000111110111011101111 2 +110010010010000001010011001 2 +326786945 10 +1641316335 8 +866130201 10 +205D1CC 16 +11111010001111101000000000010 2 +2440602077 8 +389881780 10 +16296732 10 +6326305646 8 +206BC6B2 16 +165588226 10 +684552880 10 +D29E8F1 16 +6361550067 8 +3700025535 8 +603169234 10 +6312550563 8 +10010111000011010000110000 2 +3A18A0C5 16 +118130870 10 +1000110011001010000110111101 2 +2360472105 8 +5452651211 8 +1101101001100011010100111 2 +39D3DDBE 16 +2521641740 8 +899994522 10 +101001011101001110111010000 2 +378B88B3 16 +685721213 10 +101001011011110111100001101010 2 +110101011001101100010111000101 2 +1100000011111100100010010000 2 +11000000000011111100111010101 2 +997916715 10 +A9B1B36 16 +10001011010101001101011000101 2 +100010111101100100001001001100 2 +101010011110101111000110001001 2 +684041292 10 +891228939 10 +1004FDF5 16 +417324184 10 +1100010001100001100011001010 2 +3386DA1 16 +1D238B41 16 +558315422 10 +2672300361 8 +948516995 10 +34D5BB5F 16 +1110011000101100001000110101 2 +101111001110000110110110110100 2 +F563F8 16 +10010011011000010100001010111 2 +11110100101000000010000101011 2 +110001001101111001010011100101 2 +1100000001000100100001001100 2 +100110101010100111111011110011 2 +685404552 10 +104871049 10 +766216040 10 +2244567627 8 +10001100000111101001001010000 2 +10100010111101011101001111101 2 +473479127 10 +485093176 10 +100110111100000110000010111110 2 +612292111 10 +2147505536 8 +173437208 10 +2A995F6F 16 +11110100010001010101011010010 2 +4632461232 8 +3119186A 16 +292219E4 16 +2C1C73CB 16 +213A4FCB 16 +100001111111011110110111010110 2 +340470210 8 +1010100101001111001001100011 2 +29991229 10 +110111100010011111001011010101 2 +100000000001001111011111100001 2 +6760043720 8 +663542213 10 +3AFBCFE2 16 +132926155 10 +110000000010011010110101101110 2 +110110100111101111110000 2 +223776479 10 +868837429 10 +3315434007 8 +630307718 10 +11001100001001010010100111110 2 +6404563044 8 +FCF87E5 16 +489615989 10 +2213002004 8 +7012455444 8 +150823359 10 +26C23C9 16 +10010100110110111001000101010 2 +1704212727 8 +2041632664 8 +111010100110010100101110010111 2 +1A791E2A 16 +1667216172 8 +1010010010111010001111001111 2 +6452547755 8 +17FE1DFD 16 +151250179 10 +3425C22D 16 +2644471256 8 +100100001011011111101010101010 2 +1110000101111001000100010100 2 +7174534401 8 +110000010100010111011101111000 2 +10811207 10 +809181365 10 +475354C 16 +6467415761 8 +1001011111101111100011011010 2 +32ACE0D2 16 +2BA2D5AA 16 +5727644104 8 +28A6AD4F 16 +12CA21A3 16 +460395596 10 +4505112733 8 +602919029 10 +543046254 8 +342435109 10 +456190024 10 +102270776 8 +110101010110110100000011101111 2 +136EC9C4 16 +111010000111000101110101011111 2 +207076E3 16 +1275356774 8 +2574613127 8 +17492685 16 +53416526 10 +101110101110100111101100010010 2 +163241511 10 +1127653272 8 +10101001000101001110111111001 2 +1000100010110111101000001111 2 +6730775243 8 +279A9F14 16 +2707107307 8 +244F99AC 16 +101010010101000000000110101110 2 +776701476 8 +3284E697 16 +101100101100111111001001011110 2 +582457676 10 +209493850 10 +200390BB 16 +101101001111111011111010001111 2 +13571414 8 +7334C8 16 +7153443303 8 +101011110000011111100111111010 2 +DF4D254 16 +5776552512 8 +1111001010110011011010001 2 +111011000000000001101111100110 2 +2660603740 8 +3603471064 8 +183553756 10 +110111000010001100100110010101 2 +1000001100100011111110010110 2 +11100111110100010101001000100 2 +101101001100100000000000000000 2 +101011011111111101010101000110 2 +859498898 10 +6057747614 8 +3451311147 8 +453540292 10 +882595620 10 +15D0D56B 16 +110001111001101111100100001100 2 +724917289 10 +101010010111100001011111100010 2 +1500612666 8 +11100101001010011000000110010 2 +10100000011000100011000010011 2 +382100180 10 +205137510 8 +182815B 16 +11100000000011110000101101101 2 +4016401366 8 +284185210 10 +1661455367 8 +1001011000010110000000011010 2 +4235353222 8 +422991856 10 +564162703 10 +458694495 10 +2133571370 8 +419071311 10 +CAF5C9B 16 +373D91F6 16 +6640356317 8 +11000000111010010101100000110 2 +167454497 10 +B7D50E2 16 +145933594 10 +10000110010100000101111000111 2 +3221204016 8 +293457580 10 +18DE265E 16 +203786810 10 +177085798 10 +10000111001101011001111000011 2 +751274030 8 +2CBDFA52 16 +740813022 10 +534491587 10 +830055603 10 +100010010001011001110001101110 2 +1036FBA8 16 +6742563270 8 +1E8D26BC 16 +2522240341 8 +4340441345 8 +110000011010010111101000011000 2 +760538660 10 +35E49BEA 16 +5067240624 8 +10111101101001011000101011101 2 +201215143 8 +496706148 10 +449066801 10 +1067170000 8 +3077CC53 16 +6225010310 8 +7B829E5 16 +3664022641 8 +39B1EB45 16 +2A9D2699 16 +27303853 10 +100110010100110101100111110110 2 +110000001100111110101011011001 2 +2746514164 8 +6767564633 8 +614137861 10 +1AD19851 16 +C068AA 16 +100110011100110011011001010001 2 +278A07E8 16 +1761323375 8 +222246536 8 +29576058 16 +906622682 10 +191315718 10 +38D17281 16 +87275A6 16 +1720017067 8 +FFF0320 16 +111010100101000110101001011100 2 +787120440 10 +1BF1C460 16 +13756749 10 +27969737 16 +1E2871D6 16 +11100101001100011111110011100 2 +11010110010001110110010110000 2 +4051245110 8 +2A7FDD93 16 +3979B89B 16 +2EBE9033 16 +2167012064 8 +3126037623 8 +1110011100100111001010100110 2 +3675016741 8 +D354621 16 +1525563615 8 +1366638 10 +566243299 10 +5252601176 8 +557930198 10 +8A3FD93 16 +4516051554 8 +294429863 10 +357214368 10 +4532514032 8 +4326711657 8 +10111011101000011100111111101 2 +11011010000010110110100111101 2 +C870D4F 16 +29CAFCB9 16 +13080B0D 16 +455ED41 16 +100010000011110011100010101011 2 +2673151174 8 +658972198 10 +2BF0CEFE 16 +110110100010000110000000101100 2 +111000010100100000001100011011 2 +558263618 10 +111010101000000000110111111010 2 +10001111101100000110111 2 +875556376 10 +624506693 10 +3062113653 8 +3736006231 8 +6530344214 8 +3577114221 8 +269736807 10 +7152540353 8 +6015576071 8 +7310141636 8 +827360021 10 +30195113 16 +10010111111101001100011011000 2 +6007571633 8 +818386858 10 +694392162 10 +110110011101010110110001101000 2 +555946266 10 +527643539 10 +101000110000001010000110111111 2 +361796339 10 +276606666 10 +10111111000111000100111110111 2 +431503956 10 +D516F5F 16 +2CBF2885 16 +1302045554 8 +29D4CE0 16 +10111101100001001100111010110 2 +101101010001010110110111110100 2 +161EDBD9 16 +1AB91C24 16 +637809385 10 +100110100101100001110110111000 2 +24C4813C 16 +757243354 8 +37AFD045 16 +110000011111000000010010111101 2 +208923782 10 +1010001111010101010101110101 2 +2071347512 8 +2465144407 8 +7060503631 8 +250EB9C7 16 +4421320353 8 +3050165637 8 +101110011001101100010000100011 2 +1011111000111011100010101111 2 +110101000000000010001111001111 2 +111010001000011010110000010110 2 +101110110111110111001110100001 2 +507633319 10 +FB84147 16 +110010110110010000001010111101 2 +100100101101011011111100000110 2 +143DCAA 16 +110100101101010001001100000001 2 +E5B5525 16 +2FD98C89 16 +1011000111111010100101010010 2 +10CEF5A1 16 +721261235 8 +B35CBE0 16 +513414864 10 +2664E659 16 +110000110010010011011001101100 2 +11011110111001000010110111110 2 +6167561157 8 +926160700 10 +39919084 10 +27A6D812 16 +122571FC 16 +5476741007 8 +1000100110111001101111100011 2 +100011010001011110011011010101 2 +960288450 10 +5E527A5 16 +1366072177 8 +4732071127 8 +7323216137 8 +6470202741 8 +10011001111111000100011001010 2 +3145074662 8 +11000001100010100111100111000 2 +111000101010100101011101111 2 +366816107 10 +10110000001100000000111000000 2 +1446143066 8 +2232367155 8 +100111011001100111011101110011 2 +472595274 10 +1010011110011111010101001011 2 +561394915 10 +5512632510 8 +10010011000001101001111100111 2 +1A2EB9F1 16 +6620674616 8 +7207746345 8 +230412310 8 +531385393 10 +1110011001101010011111111010 2 +11001011110101111010110100011 2 +136619959 10 +36B34B84 16 +12A06654 16 +2537322073 8 +52684862 10 +565973898 10 +1B5F3537 16 +530232543 10 +11010111010000101111111000001 2 +3AB9FEFF 16 +6737212361 8 +2298E519 16 +710758576 10 +101000000010101000111000101 2 +21B73DC7 16 +182707984 10 +628042562 10 +401372959 10 +2473F4C1 16 +251685755 10 +863026992 10 +902CB30 16 +5274313503 8 +958164602 10 +18825836 16 +445804277 10 +1DFB4646 16 +5EFDF1 16 +2023420360 8 +5672523750 8 +37958BD1 16 +110110010110010000101111000011 2 +1566320601 8 +702411050 8 +2516472771 8 +110100010100100010100110000011 2 +101001110101001101100101001001 2 +499220118 10 +110101100110001010100000001101 2 +318CEFDD 16 +110101101111100100010001111011 2 +1217DA2D 16 +291949007 10 +5555311724 8 +110010000111000001000110110000 2 +239739992 10 +1100000110111000010011010110 2 +101000011110111000110001110 2 +3A0FCDA3 16 +372F21A7 16 +52317150 10 +438582706 10 +1110010111010010010010010111 2 +1061364360 8 +3776324407 8 +111010001000110000001100101111 2 +5252445237 8 +7240540432 8 +315138231 10 +10000110101011101100110110101 2 +7345234707 8 +32BCAA97 16 +11110001000100010000010010101 2 +6014337566 8 +EFE348F 16 +110011011101100100011110000111 2 +255EDBA7 16 +10010101010000010010011010100 2 +965752866 10 +833750185 10 +1111111000101001101111011101 2 +29A0CC66 16 +4377634373 8 +6617154705 8 +324106209 10 +110111110010010100110011111111 2 +5732367727 8 +576694656 10 +100110010110011010000101010111 2 +1101111001110111011011010100 2 +35208F35 16 +D4C657A 16 +1D2E05EF 16 +693378294 10 +740388802 10 +5734625304 8 +2E18250D 16 +15DDB408 16 +BD95B34 16 +30310241 16 +6550573363 8 +1102514556 8 +983114826 10 +741363700 10 +897815695 10 +4663032473 8 +847761515 10 +955875207 10 +2070677003 8 +335A6C05 16 +159471992 10 +436874579 10 +1302226062 8 +528278743 10 +2016661112 8 +789845573 10 +4635403366 8 +3757573470 8 +390681136 10 +100000010011100011110100111100 2 +224FAF1 16 +1111111110011010001111111100 2 +163858666 10 +110000010011111101111001110111 2 +3252764D 16 +39D401B0 16 +210306396 10 +3025055473 8 +5BDDA62 16 +6EA41E5 16 +585144292 10 +6624456122 8 +119682FB 16 +10011011111100100101111000101 2 +1142602447 8 +3436760616 8 +747702283 10 +220274012 10 +638614042 10 +1011100001110010100001010110 2 +4340544605 8 +393BBFB4 16 +1624622304 8 +866490268 10 +5114223677 8 +2C9CEA1A 16 +2C67FB7A 16 +3336257032 8 +1B68F40D 16 +2172621352 8 +1435145010 8 +867807056 10 +5723362505 8 +484171930 10 +8DC9331 16 +2E51674 16 +30784F2F 16 +563244136 8 +11010011011011111011001000011 2 +929378787 10 +485632494 10 +101111000101001000111100011110 2 +328EAB76 16 +6375216330 8 +702424615 10 +891300673 10 +3133210344 8 +3731557613 8 +747611023 8 +140D262D 16 +11100111010000101011010100010 2 +2476561004 8 +236928848 10 +5070504531 8 +200D808B 16 +107838564 10 +110110001101111010001001001001 2 +364831653 10 +5141724437 8 +1101101100001001000111100101 2 +848762195 10 +910403997 10 +2B3FE690 16 +22FCF2D9 16 +3351576430 8 +4474051456 8 +1010100010011110001110010010 2 +3072710564 8 +110000010111011011001110101010 2 +28C4FEA2 16 +386FC60E 16 +10010000011000101100110110010 2 +6160650257 8 +2D90D03F 16 +2AD4DCE 16 +101100001011100000010100110101 2 +876898614 10 +817058105 10 +357415494 10 +734634601 10 +110110101100100001111100001 2 +16E90E9D 16 +2AFC0F97 16 +354578296 10 +10011010100011101110010111 2 +3242553247 8 +393736291 10 +5110727235 8 +4060062777 8 +3674435743 8 +2F89D605 16 +292210423 10 +6077735651 8 +822422115 10 +2572FDA1 16 +100110001011011100000010 2 +787167714 10 +579688441 10 +418348413 10 +475424244 8 +260010563 8 +179262270 10 +1460677761 8 +26BD4DC 16 +3A2EBCA 16 +325880892 10 +110011001111011010001101100001 2 +2413201351 8 +823944715 10 +5507571554 8 +241397828 10 +110001001110011100010000001110 2 +2B9E28BF 16 +63441703 8 +2766010236 8 +286459105 10 +1011100101101001101010111100 2 +535421702 8 +101101101111110110011110101001 2 +131126B9 16 +4231505613 8 +2BEAA70A 16 +802558689 10 +2050322253 8 +F5A834A 16 +55855747 10 +2654511704 8 +292CF8B0 16 +10001111010001110000111110000 2 +365383284 10 +4541527611 8 +5070146163 8 +288ECD85 16 +303238561 10 +814865682 10 +5125367672 8 +6404327740 8 +538088618 10 +427258693 10 +AC259AA 16 +1C2168FB 16 +770999206 10 +26A9964D 16 +461881735 10 +430290238 10 +1101100101011001011111100010 2 +33076670 10 +655AB3F 16 +11101101011100110111001011011 2 +110101001111010011011110001011 2 +11110110011111010111111001101 2 +5521363203 8 +123714122 8 +11100001100011001000010101010 2 +772076254 8 +27D50BA4 16 +747792131 10 +3A6FF680 16 +100111010111101111101011100111 2 +10101000100011010001101100110 2 +302121634 8 +6071032577 8 +80829FE 16 +3759224D 16 +279568642 10 +6303622262 8 +30C2353D 16 +653162512 8 +11111000110001110101101011110 2 +10010001100000001000000011 2 +217632730 8 +3AEC8671 16 +110010100000100001111101110101 2 +100000101101101100010100000010 2 +100101100111101001110110111 2 +15AA9372 16 +1110100010110001101001010 2 +1111001011110001111101110001 2 +5032504041 8 +798185591 10 +110010010000011010001111111010 2 +10011101011100110000110001100 2 +5424751540 8 +6255154747 8 +D149AB3 16 +19F314EF 16 +2FBC4F6A 16 +5752226354 8 +173653647 8 +987739653 10 +111010001000100001000111001111 2 +547370261 8 +1327000610 8 +260818708 10 +100010001010010001011010011000 2 +1273447065 8 +1566225714 8 +110011111100110111101111100011 2 +111000101001011001000011000111 2 +104849424 10 +101100111011001010010100100111 2 +3262FCD2 16 +1000010111011000010111011111 2 +757544565 10 +356E2C0C 16 +F192290 16 +930123779 10 +3767214335 8 +3317257206 8 +399A7ED0 16 +1611516075 8 +2546632242 8 +2462332577 8 +5047650262 8 +5551322145 8 +111101001010100010110110 2 +523100076 8 +235068727 10 +7211743731 8 +15F6348A 16 +110111101111001100000001111000 2 +327EF8AB 16 +100110111111001100000001101110 2 +765156243 8 +307725506 10 +142C1C44 16 +25749F12 16 +6633414673 8 +326387E5 16 +7223675746 8 +3255761047 8 +66085273 10 +2EAA62EA 16 +3230250055 8 +75618594 10 +16234430 16 +11959281 16 +24659E03 16 +986460434 10 +314745248 10 +932644622 10 +232634343 8 +10001101000011011111111111101 2 +1011010000001000111100000100 2 +3B37E03F 16 +110011110101101010111010110101 2 +324897450 10 +3400FEB 16 +55C0114 16 +26A12239 16 +11110001011110101000110010 2 +1113103643 8 +31E8C74C 16 +1001000110101101101111101111 2 +1000010110001011101110010 2 +6344454247 8 +1444153611 8 +2427030361 8 +10CA14E7 16 +110011100000011010110101101001 2 \ No newline at end of file diff --git a/inputs/input_4 b/inputs/input_4 new file mode 100644 index 0000000..255b40e --- /dev/null +++ b/inputs/input_4 @@ -0,0 +1,75 @@ +PGM <-> ASU +HSM <-> XET +EIH <-> VMV +QRH <-> WKI +JJF <-> KHX +JXH <-> KHX +ASU <-> TAZ +IEK <-> HNX +QBG <-> OJC +NQA <-> FOH +WFG <-> XBA +FEM <-> SCD +XZE <-> JBW +JBW <-> JXH +HNX <-> FOH +FEM <-> QRH +NQA <-> HVH +YPS <-> YHP +VMV <-> PGM +WFG <-> YUJ +TAZ <-> SCD +XZE <-> QMZ +XBA <-> WKI +JJF <-> CRR +YPS <-> XBA +QBG <-> IEK +CRR <-> SEV +XET <-> HTO +IHW <-> SEV +HTO <-> DZV +HSM <-> QMZ +HVH <-> IHW +MJB <-> COE +OJC <-> IHW +KIQ <-> VJZ +STT <-> VJZ +XBA <-> OJC +CRR <-> HVH +JBW <-> SBK +YPS <-> WKI +XET <-> OJC +LWO <-> YUJ +SZW <-> SBK +CRR <-> YPS +SZW <-> VMV +WFG <-> WKI +WTO <-> STT +VJZ <-> YUJ +WTO <-> HVH +STT <-> EIH +LWO <-> XBA +JJF <-> COE +HNX <-> SBK +MJB <-> ASU +XET <-> DZV +VBJ <-> CRR +XET <-> YHP +VBJ <-> JBW +HSM <-> IEK +QMZ <-> YUJ +IHW <-> COE +CRR <-> XBA +KIQ <-> ASU +HVQ <-> XBA +WKI <-> IHW +SCD <-> FWI +EIH <-> QRH +HSM <-> CQA +TAZ <-> WTO +HTO <-> FWI +PGM <-> OJC +TAZ <-> FWI +HVQ <-> CQA +JXH <-> IEK +PGM <-> SEV \ No newline at end of file diff --git a/main.py b/main.py deleted file mode 100644 index c02586c..0000000 --- a/main.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env python3 - -import tools.aoc -import argparse -import importlib -import os - -YEAR = 2018 -TIMEIT_NUMBER = 50 - -argument_parser = argparse.ArgumentParser() -argument_parser.add_argument("-d", "--day", help="specify day to process; leave empty for ALL days", type=int) -argument_parser.add_argument("-p", "--part", help="run only part x", choices=[1, 2], type=int) -argument_parser.add_argument("--timeit", help="measure execution time", action="store_true", default=False) -argument_parser.add_argument( - "--timeit-number", - help="build average time over this many executions", - type=int, - default=TIMEIT_NUMBER -) -argument_parser.add_argument("-v", "--verbose", help="show test case outputs", action="store_true", default=False) -flags = argument_parser.parse_args() - -import_day = "" -if flags.day: - import_day = "%02d" % flags.day - -imported = [] -for _, _, files in os.walk(tools.aoc.BASE_PATH): - for f in files: - if f.startswith('day' + import_day) and f.endswith('.py'): - lib_name = f[:-3] - globals()[lib_name] = importlib.import_module(lib_name) - imported.append(lib_name) - - break - -for lib in sorted(imported): - day = int(lib[-2:]) - day_class = getattr(globals()[lib], "Day")(YEAR, day) - day_class.run(flags.part if flags.part else 3, flags.verbose, flags.timeit, flags.timeit_number) diff --git a/problem1.py b/problem1.py new file mode 100644 index 0000000..5de8d41 --- /dev/null +++ b/problem1.py @@ -0,0 +1,17 @@ +my_input = list(map(int, open("inputs/input_1", "r").readlines())) + +p1 = sum(my_input) +p2 = sum(sorted(my_input)[:-20]) + + +p3 = 0 +rev = False +for x in my_input: + if rev: x = -x + p3 += x + rev = not rev + + +print(p1) +print(p2) +print(p3) diff --git a/problem2.py b/problem2.py new file mode 100644 index 0000000..2e5b0d8 --- /dev/null +++ b/problem2.py @@ -0,0 +1,38 @@ +my_input = open("inputs/input_2", "r").read().split("\n") +my_input = list(map(lambda x: True if x == "TRUE" else False, my_input)) + +p1 = 0 +for i, x in enumerate(my_input): + if x: + p1 += (i + 1) + + +def solve_gates(inputs: list[bool]) -> list[bool]: + result_gates = [] + is_or = False + for i in range(0, len(inputs), 2): + if is_or: + if my_input[i] or my_input[i + 1]: + result_gates.append(True) + else: + result_gates.append(False) + else: + if my_input[i] and my_input[i + 1]: + result_gates.append(True) + else: + result_gates.append(False) + + is_or = not is_or + + return result_gates + + +p2 = sum(solve_gates(my_input)) +p3 = sum(my_input) +while len(my_input) > 1: + my_input = solve_gates(my_input) + p3 += sum(my_input) + +print(p1) +print(p2) +print(p3) diff --git a/problem3.py b/problem3.py new file mode 100644 index 0000000..be32548 --- /dev/null +++ b/problem3.py @@ -0,0 +1,24 @@ +my_input = open("inputs/input_3", "r").read().split("\n") + +p1 = 0 +read_sum = 0 +for line in my_input: + number, base = line.split() + base = int(base) + number = int(number, base) + p1 += base + read_sum += number + +p2 = read_sum + +p3 = "" +b65chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#" +while read_sum > 64: + rem = read_sum % 65 + read_sum = read_sum // 65 + p3 = b65chars[rem] + p3 +p3 = b65chars[read_sum] + p3 + +print(p1) +print(p2) +print(p3) diff --git a/problem4.py b/problem4.py new file mode 100644 index 0000000..5c76426 --- /dev/null +++ b/problem4.py @@ -0,0 +1,43 @@ +from collections import deque + +my_input = open("inputs/input_4", "r").read().split("\n") +start = "STT" + + +class City: + def __init__(self, name): + self.name = name + self.connects = set() + +cities = {} +for line in my_input: + city_left, city_right = line.split(" <-> ") + if city_left not in cities: + cities[city_left] = City(city_left) + if city_right not in cities: + cities[city_right] = City(city_right) + + cities[city_left].connects.add(cities[city_right]) + cities[city_right].connects.add(cities[city_left]) + +p1 = len(cities) +p2 = 0 +p3 = 0 +q = deque([(0, cities[start])]) +seen = set() +while q: + dist, city = q.popleft() + if city in seen: + continue + seen.add(city) + + p3 += dist + if dist <= 3: + p2 += 1 + + for sub_city in city.connects: + q.append((dist + 1, sub_city)) + +print(p1) +print(p2) +print(p3) diff --git a/skel_day.py b/skel_day.py deleted file mode 100644 index bf3331b..0000000 --- a/skel_day.py +++ /dev/null @@ -1,24 +0,0 @@ -from tools.aoc import AOCDay -from typing import Any - - -class Day(AOCDay): - inputs = [ - [ - (None, "input%DAY%"), - ], - [ - (None, "input%DAY%"), - ] - ] - - def part1(self) -> Any: - return "" - - def part2(self) -> Any: - return "" - - -if __name__ == '__main__': - day = Day(%YEAR%, %DAY%) - day.run(verbose=True) diff --git a/start_day.py b/start_day.py deleted file mode 100644 index 8f8da4c..0000000 --- a/start_day.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python3 -from argparse import ArgumentParser -from datetime import datetime -from os.path import exists -from platform import system -from subprocess import call -from time import sleep -from tools.tools import human_readable_time_from_delta -import webbrowser - - -YEAR = 2018 -CHARMS = { - 'Linux': '/usr/local/bin/charm', - 'Windows': r'C:\Users\pennywise\AppData\Local\JetBrains\Toolbox\scripts\pycharm.cmd' -} - -arg_parser = ArgumentParser() -arg_parser.add_argument("-d", "--day", help="start a specific day (default: today)", type=int) -args = arg_parser.parse_args() - -DAY = args.day or datetime.now().day - -if YEAR < 2015 or not 1 <= DAY <= 25: - print("Invalid year or day for year: %d, day: %d" % (YEAR, DAY)) - exit() - -day_file = "day%02d.py" % DAY -if exists(day_file): - print(day_file, "already exists. Use that one!") - exit() - -start = datetime(YEAR, 12, DAY, 6, 0, 0) -now = datetime.now() -if start > now: - time_wait = start - now - if time_wait.days > 0: - print("Do you really want to wait %d days?" % time_wait.days) - exit() - - while time_wait.seconds > 0: - print("Day %d starts in %s.\r" % (DAY, human_readable_time_from_delta(time_wait))) - if time_wait.seconds > 70: - wait = min(1, time_wait.seconds // 3600) * 3600 + min(1, time_wait.seconds // 60) * 60 - sleep(wait) - else: - sleep(1) - time_wait = start - datetime.now() - - -with open("skel_day.py", "r") as IN: - with open(day_file, "w") as OUT: - while in_line := IN.readline(): - OUT.write(in_line.replace("%YEAR%", str(YEAR)).replace("%DAY%", str(DAY))) - -call(["git", "add", day_file]) -webbrowser.open("https://adventofcode.com/%d/day/%d" % (YEAR, DAY)) -call([CHARMS[system()], day_file])