03
https://adventofcode.com/2024/day/3
Prob1
題目
給一堆字串,找出所有 mul(a,b)
,把所有
範例
Input
mul(1,2)mul(3,4]mul(5,6)
Output
32
解法
直接用 regex findall mul(\d+,\d+)
。
python
import sys
import re
ans = 0
ok = True
for line in sys.stdin:
for match in re.findall('mul\\(\\d+,\\d+\\)', line):
if not ok:
continue
a, b = match.split(',')
ia = int(a[4:])
ib = int(b[:-1])
ans += ia*ib
print(ans)
Prob2
題目
給一堆字串,找出所有 mul(a,b)
、 do()
、don't()
。
mul(a,b)
: 計算`` don't()
: 會把接下來的 mul 操作 disable。do()
: 會把接下來的 mul 操作 enable。
範例
Input
mul(1,2)don't()mul(3,4)do()mul(5,6)
Output
32
解法
一樣用 regex findall mul(\d+,\d+)|do\(\)|don't\(\)
😂
python
import sys
import re
ans = 0
ok = True
for line in sys.stdin:
for match in re.findall('mul\\(\\d+,\\d+\\)|do\\(\\)|don\'t\\(\\)', line):
if match == 'do()':
ok = True
continue
if match == 'don\'t()':
ok = False
continue
if not ok:
continue
a, b = match.split(',')
ia = int(a[4:])
ib = int(b[:-1])
ans += ia*ib
print(ans)