advent-of-code/2023/day1/day1.py
2023-12-16 19:18:02 +01:00

77 lines
1.9 KiB
Python

import string
digits_letter = ["one", "two","three", "four", "five", "six", "seven", "eight", "nine"]
start = [digit[0] for digit in digits_letter]
dict_digit = {
"one": 1,
"two": 2,
"three": 3,
"four": 4,
"five": 5,
"six": 6,
"seven": 7,
"eight": 8,
"nine": 9
}
def load():
with open("./day1.txt") as f:
return [l.replace("\n", "") for l in f.readlines()]
def puzzle1():
values = load()
calibration = []
for value in values:
first = None
last = None
for char in value:
if char in string.digits:
if not first:
first = char
last = first
else:
last = char
v = f"{first}{last}"
calibration.append(int(v))
return sum(calibration)
def puzzle2():
values = load()
calibration = []
for value in values:
first = None
last = None
for i in range(len(value)):
char = value[i]
if char in string.digits:
if not first:
first = char
last = first
else:
last = char
elif char in start:
for j in range(6):
word = value[i:i+j]
if word in digits_letter:
if not first:
first = dict_digit[word]
last = first
break
else:
last = dict_digit[word]
break
v = f"{first}{last}"
calibration.append(int(v))
return sum(calibration)
if __name__ == "__main__":
print("> Day 1")
print("Puzzle 1 answer : %s" % puzzle1())
print("Puzzle 2 answer : %s" % puzzle2())