This commit is contained in:
Stefan Harmuth 2023-12-01 06:31:05 +01:00
parent e1d3558c50
commit ccefb7e6f0
5 changed files with 1066 additions and 7 deletions

47
day01.py Normal file
View File

@ -0,0 +1,47 @@
from tools.aoc import AOCDay
from typing import Any
NUMBERS = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
class Day(AOCDay):
inputs = [
[
(142, "input1_test1"),
(53386, "input1"),
],
[
(281, "input1_test2"),
(53312, "input1"),
],
]
def getCalibrationSum(self, translate: bool = False) -> int:
calibration_sum = 0
for line in self.getInput():
dig = ""
while line:
if translate:
for i, n in enumerate(NUMBERS):
if line.startswith(n):
dig += str(i)
if ord("0") <= ord(line[0]) <= ord("9"):
dig += line[0]
line = line[1:]
calibration_sum += int(dig[0]) * 10 + int(dig[-1])
return calibration_sum
def part1(self) -> Any:
return self.getCalibrationSum()
def part2(self) -> Any:
return self.getCalibrationSum(True)
if __name__ == "__main__":
day = Day(2023, 1)
day.run(verbose=True)

1000
inputs/input1 Normal file

File diff suppressed because it is too large Load Diff

4
inputs/input1_test1 Normal file
View File

@ -0,0 +1,4 @@
1abc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet

7
inputs/input1_test2 Normal file
View File

@ -0,0 +1,7 @@
two1nine
eightwothree
abcone2threexyz
xtwone3four
4nineeightseven2
zoneight234
7pqrstsixteen

View File

@ -29,11 +29,6 @@ if exists(day_file):
print(day_file, "already exists. Use that one!")
exit()
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)))
start = datetime(YEAR, 12, DAY, 6, 0, 0)
now = datetime.now()
if start > now:
@ -43,9 +38,15 @@ if start > now:
exit()
for x in range(time_wait.seconds, -1, -1):
print("Day starts in %02ds.\r")
print("Day starts in %02ds.\r" % x)
sleep(1)
call([CHARMS[system()], day_file])
webbrowser.open("https://adventofcode.com/%d/day/%d" % (YEAR, DAY))
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])
call([CHARMS[system()], day_file])