Solve day 3 (Python)
This commit is contained in:
parent
614e50c8a3
commit
e5a2a3a704
33
q3.py
Normal file
33
q3.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import re
|
||||||
|
|
||||||
|
MUL_PATTERN = re.compile(r"mul\((\d+), *(\d+)\)")
|
||||||
|
def task1(text: str) -> int:
|
||||||
|
total = 0
|
||||||
|
for mul in MUL_PATTERN.finditer(text):
|
||||||
|
a, b = map(int, mul.groups())
|
||||||
|
total += a*b
|
||||||
|
return total
|
||||||
|
|
||||||
|
MUL_OR_DO_PATTERN = re.compile(r"do\(\)|don't\(\)|mul\((\d+), *(\d+)\)")
|
||||||
|
def task2(text: str) -> int:
|
||||||
|
total = 0
|
||||||
|
on = True
|
||||||
|
for op in MUL_OR_DO_PATTERN.finditer(text):
|
||||||
|
if op.group(0) == "do()":
|
||||||
|
on = True
|
||||||
|
if op.group(0) == "don't()":
|
||||||
|
on = False
|
||||||
|
if op.group(1) and on:
|
||||||
|
a, b = map(int, op.groups())
|
||||||
|
total += a*b
|
||||||
|
return total
|
||||||
|
|
||||||
|
def main():
|
||||||
|
with open("i3.txt") as f:
|
||||||
|
text = f.read()
|
||||||
|
|
||||||
|
print(task1(text))
|
||||||
|
print(task2(text))
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user