mirror of
https://github.com/onyx-and-iris/aoc2025.git
synced 2025-12-08 11:47:47 +00:00
41 lines
860 B
Ruby
Executable File
41 lines
860 B
Ruby
Executable File
#!/usr/bin/env ruby
|
|
# frozen_string_literal: true
|
|
|
|
require_relative "grid"
|
|
|
|
class Main
|
|
def run
|
|
data = []
|
|
$stdin.each_line do |line|
|
|
data << line.chomp
|
|
end
|
|
|
|
@sum = 0
|
|
|
|
removed_sum = 1
|
|
grid = Grid.new(data)
|
|
until removed_sum == 0
|
|
removed_sum = 0
|
|
(0...grid.rows.size).each do |row_index|
|
|
(0...grid.columns.size).each do |column_index|
|
|
next unless grid.cell_at(row_index, column_index).value == "@"
|
|
|
|
memo = grid.cell_at(row_index, column_index).neighbours.reject do |cell|
|
|
grid.cell_at(cell.row, cell.column).value != "@"
|
|
end
|
|
if memo.size < 4
|
|
data[row_index][column_index] = "x"
|
|
removed_sum += 1
|
|
end
|
|
end
|
|
end
|
|
@sum += removed_sum
|
|
grid = Grid.new(data)
|
|
end
|
|
|
|
puts @sum
|
|
end
|
|
end
|
|
|
|
Main.new.run
|