Skip to content

Commit dadb00f

Browse files
committed
Day 3 solutions
1 parent 75bac0e commit dadb00f

File tree

5 files changed

+66
-0
lines changed

5 files changed

+66
-0
lines changed

03-1.py

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env python
2+
3+
from functools import reduce
4+
import re
5+
6+
input = open('03.input').read()
7+
8+
inst = re.compile('mul\\([0-9]+,[0-9]+\\)')
9+
10+
print(reduce(lambda x, y: x + y,
11+
map(lambda terms: int(terms[0]) * int(terms[1]),
12+
[mul[4:-1].split(',') for mul in re.findall(inst, input)])))

03-1.rb

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env ruby
2+
3+
input = File.read('03.input')
4+
5+
inst = /mul\([[:digit:]]+,[[:digit:]]+\)/
6+
7+
puts input.scan(inst).map { |mul| mul[4..-2].split(',').map(&:to_i).reduce(&:*) }.sum

03-2.py

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env python
2+
3+
from functools import reduce
4+
import re
5+
6+
input = open('03.input').read()
7+
8+
inst = re.compile('do\\(\\)|don\'t\\(\\)|mul\\([0-9]+,[0-9]+\\)')
9+
10+
res = 0
11+
enabled = True
12+
13+
for i in re.findall(inst, input):
14+
match i:
15+
case 'do()':
16+
enabled = True
17+
case 'don\'t()':
18+
enabled = False
19+
case _:
20+
if enabled:
21+
res += reduce(lambda x, y: x * y,
22+
map(lambda s: int(s),
23+
i[4:-1].split(',')))
24+
25+
print(res)

03-2.rb

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/usr/bin/env ruby
2+
3+
input = File.read('03.input')
4+
5+
inst = /do\(\)|don't\(\)|mul\([[:digit:]]+,[[:digit:]]+\)/
6+
7+
res = 0
8+
enabled = true
9+
10+
input.scan(inst).each do |i|
11+
case i
12+
when 'do()'
13+
enabled = true
14+
when 'don\'t()'
15+
enabled = false
16+
else
17+
res += i[4..-2].split(',').map(&:to_i).reduce(&:*) if enabled
18+
end
19+
end
20+
21+
puts res

03.sample-2

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))

0 commit comments

Comments
 (0)