2025-12-04 09:48:36 +00:00

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