◂ 3 décembre 2024 ▸
Mull It Over : Trouver les bons motifs dans un texte et multiplier.
^+'*>,,why()mul(229,919)&$-#when()<do() …
select()#'mul$%({]!how()^mul(832,589)' …
⋮
code.py crée un tableau des opérations pertinentes et les traite ensuite ;
code_orig.py cherche les mul
de façon peu efficace, puis, pour la partie 2, supprime les parties entre don't()
et do()
avant de recommencer.
- code.py
- code_orig.py
import re, math
with open("input.txt", 'r', encoding='utf-8') as f:
text = f.read()
tokens = re.findall("mul\\([0-9]{1,3},[0-9]{1,3}\\)|do\\(\\)|don't\\(\\)", text)
result1 = result2 = 0
do = True
for token in tokens:
if token == "do()":
do = True
elif token == "don't()":
do = False
else:
#product = math.prod([int(val) for val in re.findall('[0-9]+', token)])
a, b = token[4:-1].split(',')
product = int(a) * int(b)
result1 += product
if do:
result2 += product
print("Réponse partie 1:", result1)
print("Réponse partie 2:", result2)