-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path03.rb
26 lines (20 loc) · 1 KB
/
03.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# https://adventofcode.com/2024/day/3
corrupted_memory = File.read('input03.txt')
########################################################################################################################
# 1
########################################################################################################################
regex = /mul\((\d{1,3})\,(\d{1,3})\)/
puts corrupted_memory.scan(regex).sum { |mults| mults[0].to_i * mults[1].to_i }
# 167650499
########################################################################################################################
# 2
########################################################################################################################
result = 0
enabled = true
corrupted_memory.scan(/mul\((\d{1,3})\,(\d{1,3})\)|(don't\(\)|do\(\))/) do |found_items|
enabled = false and next if found_items[2] == "don't()"
enabled = true and next if found_items[2] == 'do()'
result += found_items[0].to_i * found_items[1].to_i if enabled
end
puts result
# 95846796