nice little snack

This commit is contained in:
Stefan Harmuth 2025-03-14 09:20:40 +01:00
parent 0625ade7f8
commit 74418a51f1
13 changed files with 1810 additions and 169 deletions

View File

@ -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

View File

@ -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 <day_of_month>`
# 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:
<!-- AOC TILES BEGIN -->
<!-- AOC TILES END -->
# Codyssi 2024 Summer at the lab

300
inputs/input_1 Normal file
View File

@ -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

512
inputs/input_2 Normal file
View File

@ -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

800
inputs/input_3 Normal file
View File

@ -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

75
inputs/input_4 Normal file
View File

@ -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

41
main.py
View File

@ -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)

17
problem1.py Normal file
View File

@ -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)

38
problem2.py Normal file
View File

@ -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)

24
problem3.py Normal file
View File

@ -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)

43
problem4.py Normal file
View File

@ -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)

View File

@ -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)

View File

@ -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])