Day 11
This commit is contained in:
46
2023/day11/p1.rb
Normal file
46
2023/day11/p1.rb
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
def build_space_arr(grid)
|
||||||
|
offset = []
|
||||||
|
grid.each_with_index do |row, i|
|
||||||
|
offset << if row.include? '#'
|
||||||
|
if offset.empty?
|
||||||
|
0
|
||||||
|
else
|
||||||
|
offset[i - 1] + 1
|
||||||
|
end
|
||||||
|
elsif offset.empty?
|
||||||
|
1
|
||||||
|
else
|
||||||
|
offset[i - 1] + 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
offset
|
||||||
|
end
|
||||||
|
|
||||||
|
res = 0
|
||||||
|
grid = []
|
||||||
|
File.foreach('./2023/day11/data') do |line|
|
||||||
|
grid << line.strip.split('')
|
||||||
|
end
|
||||||
|
|
||||||
|
row_offset = build_space_arr grid
|
||||||
|
col_offset = build_space_arr grid.transpose
|
||||||
|
|
||||||
|
found_galaxies = []
|
||||||
|
grid.each_with_index do |row, r|
|
||||||
|
row.each_with_index do |char, c|
|
||||||
|
next unless char == '#'
|
||||||
|
|
||||||
|
found_galaxies.each do |galaxy|
|
||||||
|
res += (row_offset[r] - galaxy[:x]).abs + (col_offset[c] - galaxy[:y]).abs
|
||||||
|
end
|
||||||
|
|
||||||
|
found_galaxies << {
|
||||||
|
x: row_offset[r],
|
||||||
|
y: col_offset[c]
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
puts res
|
||||||
48
2023/day11/p2.rb
Normal file
48
2023/day11/p2.rb
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# This is actually identical to p1, except for the offset of + 1_000_000 which was previously + 2
|
||||||
|
|
||||||
|
def build_space_arr(grid)
|
||||||
|
offset = []
|
||||||
|
grid.each_with_index do |row, i|
|
||||||
|
offset << if row.include? '#'
|
||||||
|
if offset.empty?
|
||||||
|
0
|
||||||
|
else
|
||||||
|
offset[i - 1] + 1
|
||||||
|
end
|
||||||
|
elsif offset.empty?
|
||||||
|
1
|
||||||
|
else
|
||||||
|
offset[i - 1] + 1_000_000
|
||||||
|
end
|
||||||
|
end
|
||||||
|
offset
|
||||||
|
end
|
||||||
|
|
||||||
|
res = 0
|
||||||
|
grid = []
|
||||||
|
File.foreach('./2023/day11/data') do |line|
|
||||||
|
grid << line.strip.split('')
|
||||||
|
end
|
||||||
|
|
||||||
|
row_offset = build_space_arr grid
|
||||||
|
col_offset = build_space_arr grid.transpose
|
||||||
|
|
||||||
|
found_galaxies = []
|
||||||
|
grid.each_with_index do |row, r|
|
||||||
|
row.each_with_index do |char, c|
|
||||||
|
next unless char == '#'
|
||||||
|
|
||||||
|
found_galaxies.each do |galaxy|
|
||||||
|
res += (row_offset[r] - galaxy[:x]).abs + (col_offset[c] - galaxy[:y]).abs
|
||||||
|
end
|
||||||
|
|
||||||
|
found_galaxies << {
|
||||||
|
x: row_offset[r],
|
||||||
|
y: col_offset[c]
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
puts res
|
||||||
Reference in New Issue
Block a user