◂ 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
with open("input.txt", 'r', encoding='utf-8') as f:
text = f.read()
def calc_muls(text):
lines = text.split('mul')
result = 0
for line in lines:
if re.search('^\\([0-9]+,[0-9]+\\)', line):
# a, b, *_ = re.split('[^0-9]+', line)
a, b, *_ = re.findall('[0-9]+', line)
result += int(a) * int(b)
return result
print("Réponse partie 1:", calc_muls(text))
### Part 2 : strip from don't to do() ###
start = text.find("don't()")
while start >= 0:
end = text.find("do()", start)
if end == -1:
end = len(text)
text = text[0:start] + text[end:]
start = text.find("don't()", start)
print("Réponse partie 2:", calc_muls(text))