mirror of
https://github.com/onyx-and-iris/aoc2025.git
synced 2025-12-07 22:57:50 +00:00
add day_05
This commit is contained in:
parent
432d14e248
commit
0a3b029aba
28
day_05/1.rb
Executable file
28
day_05/1.rb
Executable file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Main
|
||||
def run
|
||||
ranges = []
|
||||
ingredient_ids = Hash.new(0)
|
||||
$stdin.each_line do |line|
|
||||
arr = line.chomp.split("-").map(&:to_i)
|
||||
if arr.size == 2
|
||||
ranges << (arr[0]..arr[1])
|
||||
elsif arr.size == 1
|
||||
ingredient_ids[arr[0]] += 1
|
||||
end
|
||||
end
|
||||
|
||||
@sum = 0
|
||||
ingredient_ids.each do |id, count|
|
||||
if ranges.any? { |r| r.include?(id) }
|
||||
@sum += count
|
||||
end
|
||||
end
|
||||
|
||||
puts @sum
|
||||
end
|
||||
end
|
||||
|
||||
Main.new.run
|
||||
47
day_05/2.rb
Executable file
47
day_05/2.rb
Executable file
@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Main
|
||||
def run
|
||||
ranges = []
|
||||
$stdin.each_line do |line|
|
||||
arr = line.chomp.split("-").map(&:to_i)
|
||||
if arr.size == 2
|
||||
ranges << (arr[0]..arr[1])
|
||||
end
|
||||
end
|
||||
|
||||
# Sort ranges by starting point
|
||||
# This prevents having to check all previous ranges for every new range
|
||||
ranges.sort_by!(&:begin)
|
||||
|
||||
valid_id_ranges = []
|
||||
ranges.each do |r|
|
||||
valid_id_ranges.each do |vr|
|
||||
if (
|
||||
# r starts inside vr
|
||||
r.begin >= vr.begin && r.begin <= vr.end) ||
|
||||
# r ends inside vr
|
||||
(r.end >= vr.begin && r.end <= vr.end) ||
|
||||
# vr starts inside r
|
||||
(vr.begin >= r.begin && vr.begin <= r.end) ||
|
||||
# vr ends inside r
|
||||
(vr.end >= r.begin && vr.end <= r.end)
|
||||
# Merge ranges
|
||||
r = ([r.begin, vr.begin].min..[r.end, vr.end].max)
|
||||
valid_id_ranges.delete(vr)
|
||||
end
|
||||
end
|
||||
valid_id_ranges << r
|
||||
end
|
||||
|
||||
@total = 0
|
||||
valid_id_ranges.each do |r|
|
||||
@total += (r.end - r.begin + 1)
|
||||
end
|
||||
|
||||
puts @total
|
||||
end
|
||||
end
|
||||
|
||||
Main.new.run
|
||||
Loading…
x
Reference in New Issue
Block a user