generated from public/aoc_template
problems 1 + 2
This commit is contained in:
parent
834a510b0f
commit
aed206e1e1
@ -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
|
|
||||||
30
README.md
30
README.md
@ -1,29 +1 @@
|
|||||||
# aoc_template
|
# Codyssi 2025 Journey to Atlantis
|
||||||
|
|
||||||
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 -->
|
|
||||||
|
|||||||
601
inputs/input1
Normal file
601
inputs/input1
Normal file
@ -0,0 +1,601 @@
|
|||||||
|
9
|
||||||
|
8
|
||||||
|
9
|
||||||
|
4
|
||||||
|
7
|
||||||
|
9
|
||||||
|
1
|
||||||
|
5
|
||||||
|
5
|
||||||
|
5
|
||||||
|
2
|
||||||
|
9
|
||||||
|
8
|
||||||
|
9
|
||||||
|
6
|
||||||
|
6
|
||||||
|
1
|
||||||
|
7
|
||||||
|
7
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
5
|
||||||
|
8
|
||||||
|
7
|
||||||
|
5
|
||||||
|
5
|
||||||
|
6
|
||||||
|
9
|
||||||
|
9
|
||||||
|
4
|
||||||
|
9
|
||||||
|
4
|
||||||
|
1
|
||||||
|
4
|
||||||
|
4
|
||||||
|
5
|
||||||
|
7
|
||||||
|
9
|
||||||
|
4
|
||||||
|
4
|
||||||
|
7
|
||||||
|
9
|
||||||
|
3
|
||||||
|
4
|
||||||
|
8
|
||||||
|
2
|
||||||
|
9
|
||||||
|
1
|
||||||
|
1
|
||||||
|
8
|
||||||
|
7
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
5
|
||||||
|
5
|
||||||
|
3
|
||||||
|
1
|
||||||
|
8
|
||||||
|
4
|
||||||
|
3
|
||||||
|
1
|
||||||
|
1
|
||||||
|
7
|
||||||
|
1
|
||||||
|
5
|
||||||
|
8
|
||||||
|
1
|
||||||
|
9
|
||||||
|
7
|
||||||
|
4
|
||||||
|
8
|
||||||
|
9
|
||||||
|
3
|
||||||
|
6
|
||||||
|
3
|
||||||
|
2
|
||||||
|
2
|
||||||
|
9
|
||||||
|
7
|
||||||
|
9
|
||||||
|
5
|
||||||
|
4
|
||||||
|
4
|
||||||
|
6
|
||||||
|
1
|
||||||
|
3
|
||||||
|
5
|
||||||
|
1
|
||||||
|
6
|
||||||
|
6
|
||||||
|
1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
8
|
||||||
|
6
|
||||||
|
4
|
||||||
|
9
|
||||||
|
1
|
||||||
|
2
|
||||||
|
7
|
||||||
|
4
|
||||||
|
9
|
||||||
|
4
|
||||||
|
5
|
||||||
|
7
|
||||||
|
9
|
||||||
|
3
|
||||||
|
1
|
||||||
|
4
|
||||||
|
8
|
||||||
|
1
|
||||||
|
4
|
||||||
|
7
|
||||||
|
4
|
||||||
|
9
|
||||||
|
2
|
||||||
|
5
|
||||||
|
7
|
||||||
|
3
|
||||||
|
5
|
||||||
|
8
|
||||||
|
9
|
||||||
|
3
|
||||||
|
9
|
||||||
|
9
|
||||||
|
3
|
||||||
|
8
|
||||||
|
8
|
||||||
|
1
|
||||||
|
5
|
||||||
|
9
|
||||||
|
6
|
||||||
|
6
|
||||||
|
2
|
||||||
|
9
|
||||||
|
3
|
||||||
|
4
|
||||||
|
3
|
||||||
|
5
|
||||||
|
6
|
||||||
|
1
|
||||||
|
5
|
||||||
|
1
|
||||||
|
8
|
||||||
|
9
|
||||||
|
2
|
||||||
|
3
|
||||||
|
2
|
||||||
|
9
|
||||||
|
8
|
||||||
|
3
|
||||||
|
9
|
||||||
|
6
|
||||||
|
6
|
||||||
|
8
|
||||||
|
6
|
||||||
|
9
|
||||||
|
9
|
||||||
|
8
|
||||||
|
4
|
||||||
|
2
|
||||||
|
5
|
||||||
|
6
|
||||||
|
3
|
||||||
|
1
|
||||||
|
5
|
||||||
|
5
|
||||||
|
4
|
||||||
|
2
|
||||||
|
3
|
||||||
|
9
|
||||||
|
6
|
||||||
|
6
|
||||||
|
3
|
||||||
|
1
|
||||||
|
4
|
||||||
|
2
|
||||||
|
6
|
||||||
|
5
|
||||||
|
8
|
||||||
|
8
|
||||||
|
4
|
||||||
|
3
|
||||||
|
7
|
||||||
|
7
|
||||||
|
7
|
||||||
|
8
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
7
|
||||||
|
6
|
||||||
|
1
|
||||||
|
7
|
||||||
|
5
|
||||||
|
3
|
||||||
|
8
|
||||||
|
2
|
||||||
|
8
|
||||||
|
9
|
||||||
|
5
|
||||||
|
5
|
||||||
|
9
|
||||||
|
9
|
||||||
|
8
|
||||||
|
8
|
||||||
|
7
|
||||||
|
9
|
||||||
|
1
|
||||||
|
8
|
||||||
|
3
|
||||||
|
8
|
||||||
|
8
|
||||||
|
4
|
||||||
|
4
|
||||||
|
2
|
||||||
|
6
|
||||||
|
9
|
||||||
|
6
|
||||||
|
7
|
||||||
|
4
|
||||||
|
5
|
||||||
|
1
|
||||||
|
2
|
||||||
|
1
|
||||||
|
6
|
||||||
|
9
|
||||||
|
3
|
||||||
|
6
|
||||||
|
1
|
||||||
|
9
|
||||||
|
4
|
||||||
|
6
|
||||||
|
9
|
||||||
|
5
|
||||||
|
6
|
||||||
|
8
|
||||||
|
6
|
||||||
|
2
|
||||||
|
8
|
||||||
|
3
|
||||||
|
4
|
||||||
|
7
|
||||||
|
3
|
||||||
|
3
|
||||||
|
9
|
||||||
|
8
|
||||||
|
4
|
||||||
|
4
|
||||||
|
6
|
||||||
|
1
|
||||||
|
9
|
||||||
|
4
|
||||||
|
8
|
||||||
|
1
|
||||||
|
7
|
||||||
|
7
|
||||||
|
6
|
||||||
|
3
|
||||||
|
9
|
||||||
|
7
|
||||||
|
3
|
||||||
|
5
|
||||||
|
4
|
||||||
|
9
|
||||||
|
6
|
||||||
|
5
|
||||||
|
3
|
||||||
|
3
|
||||||
|
3
|
||||||
|
6
|
||||||
|
9
|
||||||
|
6
|
||||||
|
1
|
||||||
|
8
|
||||||
|
4
|
||||||
|
3
|
||||||
|
9
|
||||||
|
8
|
||||||
|
2
|
||||||
|
8
|
||||||
|
5
|
||||||
|
7
|
||||||
|
6
|
||||||
|
4
|
||||||
|
4
|
||||||
|
2
|
||||||
|
8
|
||||||
|
1
|
||||||
|
1
|
||||||
|
5
|
||||||
|
6
|
||||||
|
6
|
||||||
|
3
|
||||||
|
8
|
||||||
|
2
|
||||||
|
1
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
1
|
||||||
|
5
|
||||||
|
3
|
||||||
|
1
|
||||||
|
7
|
||||||
|
5
|
||||||
|
8
|
||||||
|
8
|
||||||
|
2
|
||||||
|
3
|
||||||
|
9
|
||||||
|
8
|
||||||
|
4
|
||||||
|
7
|
||||||
|
7
|
||||||
|
4
|
||||||
|
5
|
||||||
|
1
|
||||||
|
1
|
||||||
|
4
|
||||||
|
4
|
||||||
|
2
|
||||||
|
3
|
||||||
|
3
|
||||||
|
7
|
||||||
|
3
|
||||||
|
7
|
||||||
|
3
|
||||||
|
7
|
||||||
|
7
|
||||||
|
5
|
||||||
|
6
|
||||||
|
3
|
||||||
|
2
|
||||||
|
1
|
||||||
|
1
|
||||||
|
9
|
||||||
|
3
|
||||||
|
3
|
||||||
|
3
|
||||||
|
9
|
||||||
|
3
|
||||||
|
7
|
||||||
|
2
|
||||||
|
4
|
||||||
|
3
|
||||||
|
8
|
||||||
|
7
|
||||||
|
8
|
||||||
|
5
|
||||||
|
1
|
||||||
|
4
|
||||||
|
6
|
||||||
|
1
|
||||||
|
3
|
||||||
|
3
|
||||||
|
4
|
||||||
|
4
|
||||||
|
4
|
||||||
|
4
|
||||||
|
6
|
||||||
|
8
|
||||||
|
7
|
||||||
|
3
|
||||||
|
3
|
||||||
|
8
|
||||||
|
3
|
||||||
|
4
|
||||||
|
4
|
||||||
|
2
|
||||||
|
2
|
||||||
|
8
|
||||||
|
7
|
||||||
|
2
|
||||||
|
1
|
||||||
|
4
|
||||||
|
2
|
||||||
|
3
|
||||||
|
7
|
||||||
|
7
|
||||||
|
6
|
||||||
|
6
|
||||||
|
7
|
||||||
|
7
|
||||||
|
8
|
||||||
|
7
|
||||||
|
3
|
||||||
|
1
|
||||||
|
1
|
||||||
|
4
|
||||||
|
3
|
||||||
|
5
|
||||||
|
5
|
||||||
|
9
|
||||||
|
3
|
||||||
|
9
|
||||||
|
2
|
||||||
|
7
|
||||||
|
7
|
||||||
|
1
|
||||||
|
4
|
||||||
|
1
|
||||||
|
2
|
||||||
|
2
|
||||||
|
4
|
||||||
|
1
|
||||||
|
9
|
||||||
|
1
|
||||||
|
7
|
||||||
|
4
|
||||||
|
3
|
||||||
|
8
|
||||||
|
5
|
||||||
|
8
|
||||||
|
7
|
||||||
|
4
|
||||||
|
9
|
||||||
|
7
|
||||||
|
2
|
||||||
|
7
|
||||||
|
8
|
||||||
|
3
|
||||||
|
8
|
||||||
|
8
|
||||||
|
6
|
||||||
|
2
|
||||||
|
7
|
||||||
|
9
|
||||||
|
4
|
||||||
|
7
|
||||||
|
8
|
||||||
|
6
|
||||||
|
5
|
||||||
|
7
|
||||||
|
5
|
||||||
|
8
|
||||||
|
6
|
||||||
|
7
|
||||||
|
1
|
||||||
|
2
|
||||||
|
1
|
||||||
|
4
|
||||||
|
4
|
||||||
|
2
|
||||||
|
7
|
||||||
|
2
|
||||||
|
2
|
||||||
|
7
|
||||||
|
1
|
||||||
|
4
|
||||||
|
6
|
||||||
|
9
|
||||||
|
5
|
||||||
|
2
|
||||||
|
8
|
||||||
|
6
|
||||||
|
5
|
||||||
|
8
|
||||||
|
7
|
||||||
|
4
|
||||||
|
6
|
||||||
|
3
|
||||||
|
8
|
||||||
|
6
|
||||||
|
9
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
8
|
||||||
|
2
|
||||||
|
5
|
||||||
|
2
|
||||||
|
9
|
||||||
|
2
|
||||||
|
9
|
||||||
|
7
|
||||||
|
4
|
||||||
|
3
|
||||||
|
9
|
||||||
|
7
|
||||||
|
9
|
||||||
|
2
|
||||||
|
2
|
||||||
|
1
|
||||||
|
2
|
||||||
|
4
|
||||||
|
5
|
||||||
|
2
|
||||||
|
4
|
||||||
|
3
|
||||||
|
6
|
||||||
|
3
|
||||||
|
5
|
||||||
|
8
|
||||||
|
4
|
||||||
|
4
|
||||||
|
5
|
||||||
|
3
|
||||||
|
6
|
||||||
|
7
|
||||||
|
4
|
||||||
|
3
|
||||||
|
4
|
||||||
|
1
|
||||||
|
5
|
||||||
|
2
|
||||||
|
9
|
||||||
|
6
|
||||||
|
7
|
||||||
|
1
|
||||||
|
3
|
||||||
|
3
|
||||||
|
5
|
||||||
|
1
|
||||||
|
9
|
||||||
|
2
|
||||||
|
8
|
||||||
|
2
|
||||||
|
6
|
||||||
|
2
|
||||||
|
7
|
||||||
|
2
|
||||||
|
9
|
||||||
|
1
|
||||||
|
4
|
||||||
|
9
|
||||||
|
5
|
||||||
|
6
|
||||||
|
6
|
||||||
|
1
|
||||||
|
7
|
||||||
|
9
|
||||||
|
4
|
||||||
|
6
|
||||||
|
6
|
||||||
|
4
|
||||||
|
8
|
||||||
|
2
|
||||||
|
1
|
||||||
|
8
|
||||||
|
9
|
||||||
|
4
|
||||||
|
2
|
||||||
|
9
|
||||||
|
5
|
||||||
|
4
|
||||||
|
5
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
2
|
||||||
|
7
|
||||||
|
7
|
||||||
|
2
|
||||||
|
4
|
||||||
|
2
|
||||||
|
7
|
||||||
|
3
|
||||||
|
7
|
||||||
|
2
|
||||||
|
7
|
||||||
|
9
|
||||||
|
3
|
||||||
|
9
|
||||||
|
2
|
||||||
|
4
|
||||||
|
3
|
||||||
|
1
|
||||||
|
4
|
||||||
|
2
|
||||||
|
3
|
||||||
|
7
|
||||||
|
8
|
||||||
|
5
|
||||||
|
1
|
||||||
|
7
|
||||||
|
6
|
||||||
|
9
|
||||||
|
8
|
||||||
|
6
|
||||||
|
4
|
||||||
|
1
|
||||||
|
9
|
||||||
|
9
|
||||||
|
7
|
||||||
|
3
|
||||||
|
2
|
||||||
|
9
|
||||||
|
3
|
||||||
|
1
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
3
|
||||||
|
9
|
||||||
|
7
|
||||||
|
9
|
||||||
|
8
|
||||||
|
-+-++--++----++-+++-+------+---+----++--++-++----+++++--++++++++-++--++--+--+----++--+--++-+-++-+-++--+++-++--++---+++--++--++-++++--+-++-+--+-+-+-----++++-+-+++++-+--+++++-++++-+-+-+++--+----+--+-+-+---+-+--++++------++-++-+-------+---+++++-----+-+-+++-+++---+---+++--++-+++----++-+++---++-++--+++++-++--+-+-+-+---+-+-++-++---+--+++-+++-+----++++---++-+-+-+++---+-+-+--+-++-+--+++-----++--+++-+++-+--+--++--+++-+---+----+----++-+++---++++-+++++++-+++-++++-++++-+--+-----+--+++-++++++-++--+--+----+++-+-+--+--++--++---+-+-+--++++-+-++++++---+-++-+--+--++---+-+++++++----+++--------+-+--+++-+++--++++
|
||||||
105
inputs/input2
Normal file
105
inputs/input2
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
Function A: ADD 426
|
||||||
|
Function B: MULTIPLY 65
|
||||||
|
Function C: RAISE TO THE POWER OF 3
|
||||||
|
|
||||||
|
3267
|
||||||
|
8809
|
||||||
|
4378
|
||||||
|
7706
|
||||||
|
9260
|
||||||
|
8478
|
||||||
|
1359
|
||||||
|
5536
|
||||||
|
6885
|
||||||
|
1543
|
||||||
|
7785
|
||||||
|
4652
|
||||||
|
7835
|
||||||
|
5611
|
||||||
|
9961
|
||||||
|
5078
|
||||||
|
8655
|
||||||
|
8528
|
||||||
|
4923
|
||||||
|
3560
|
||||||
|
9469
|
||||||
|
1198
|
||||||
|
6587
|
||||||
|
3615
|
||||||
|
8560
|
||||||
|
8357
|
||||||
|
7244
|
||||||
|
2669
|
||||||
|
3791
|
||||||
|
5753
|
||||||
|
2945
|
||||||
|
3870
|
||||||
|
8299
|
||||||
|
1837
|
||||||
|
1074
|
||||||
|
4389
|
||||||
|
8457
|
||||||
|
3931
|
||||||
|
5995
|
||||||
|
3470
|
||||||
|
4184
|
||||||
|
6082
|
||||||
|
1261
|
||||||
|
3007
|
||||||
|
1328
|
||||||
|
4955
|
||||||
|
2369
|
||||||
|
8456
|
||||||
|
4869
|
||||||
|
8580
|
||||||
|
4021
|
||||||
|
5845
|
||||||
|
1535
|
||||||
|
6569
|
||||||
|
5068
|
||||||
|
5625
|
||||||
|
1457
|
||||||
|
9159
|
||||||
|
1455
|
||||||
|
3278
|
||||||
|
5125
|
||||||
|
4457
|
||||||
|
6232
|
||||||
|
6212
|
||||||
|
8248
|
||||||
|
1526
|
||||||
|
8198
|
||||||
|
6158
|
||||||
|
6978
|
||||||
|
9148
|
||||||
|
1737
|
||||||
|
3236
|
||||||
|
1326
|
||||||
|
3521
|
||||||
|
8234
|
||||||
|
1763
|
||||||
|
7300
|
||||||
|
4732
|
||||||
|
8541
|
||||||
|
2127
|
||||||
|
6178
|
||||||
|
9496
|
||||||
|
9407
|
||||||
|
2778
|
||||||
|
7576
|
||||||
|
8226
|
||||||
|
8210
|
||||||
|
6491
|
||||||
|
8626
|
||||||
|
6517
|
||||||
|
7309
|
||||||
|
5447
|
||||||
|
1058
|
||||||
|
6932
|
||||||
|
1871
|
||||||
|
8908
|
||||||
|
7429
|
||||||
|
5188
|
||||||
|
6026
|
||||||
|
1026
|
||||||
|
9183
|
||||||
41
main.py
41
main.py
@ -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)
|
|
||||||
21
problem1.py
Normal file
21
problem1.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
my_input = open("inputs/input1", "r").read().splitlines()
|
||||||
|
|
||||||
|
signs = my_input[-1]
|
||||||
|
p1 = int(my_input[0])
|
||||||
|
p2 = p1
|
||||||
|
p3 = p1 * 10 + int(my_input[1])
|
||||||
|
my_input = list(map(int, my_input[1:-1]))
|
||||||
|
|
||||||
|
for i, c in enumerate(signs):
|
||||||
|
p1 = p1 + my_input[i] if c == '+' else p1 - my_input[i]
|
||||||
|
p2 = p2 + my_input[-(i+1)] if c == '+' else p2 - my_input[-(i+1)]
|
||||||
|
|
||||||
|
signs = "".join(reversed(signs))
|
||||||
|
my_input = my_input[1:]
|
||||||
|
for i in range(0, len(my_input), 2):
|
||||||
|
num = my_input[i] * 10 + my_input[i+1]
|
||||||
|
p3 = p3 + num if signs[i//2] == '+' else p3 - num
|
||||||
|
|
||||||
|
print(p1)
|
||||||
|
print(p2)
|
||||||
|
print(p3)
|
||||||
32
problem2.py
Normal file
32
problem2.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
my_input = open("inputs/input2", "r").read().splitlines()
|
||||||
|
|
||||||
|
func_a_add = int(my_input[0].split(": ")[1].split()[-1])
|
||||||
|
func_b_mul = int(my_input[1].split(": ")[1].split()[-1])
|
||||||
|
func_c_pow = int(my_input[2].split(": ")[1].split()[-1])
|
||||||
|
|
||||||
|
|
||||||
|
def expo_price(price: int) -> int:
|
||||||
|
price **= func_c_pow
|
||||||
|
price *= func_b_mul
|
||||||
|
price += func_a_add
|
||||||
|
return price
|
||||||
|
|
||||||
|
|
||||||
|
my_input = list(sorted(map(int, my_input[4:])))
|
||||||
|
p1 = my_input[len(my_input)//2]
|
||||||
|
|
||||||
|
p2 = 0
|
||||||
|
for x in my_input:
|
||||||
|
if x % 2 == 0:
|
||||||
|
p2 += x
|
||||||
|
|
||||||
|
p3 = 0
|
||||||
|
p3_max = 15_000_000_000_000
|
||||||
|
for x in my_input:
|
||||||
|
price = expo_price(x)
|
||||||
|
if price > p3 and price <= p3_max:
|
||||||
|
p3 = x
|
||||||
|
|
||||||
|
print(expo_price(p1))
|
||||||
|
print(expo_price(p2))
|
||||||
|
print(p3)
|
||||||
24
skel_day.py
24
skel_day.py
@ -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)
|
|
||||||
58
start_day.py
58
start_day.py
@ -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])
|
|
||||||
Loading…
Reference in New Issue
Block a user