class Input FILE = 'input' def initialize(directory, file = nil) @filename = "#{directory}/#{file || FILE}" end def readlines File.readlines(@filename).reject { |line| line.start_with?('#') } end end class Day def self.run new.run end def part1 end def part2 end def run puts "=== Part 1 ===" puts part1 puts "=== Part 2 ===" puts part2 end private def filename "#{File.dirname($PROGRAM_NAME)}/input" end def input @input ||= if File.exist?(filename) File.readlines(filename).reject { |line| line.start_with?('#') }.map(&:chomp) else INPUT end end def stdin @stdin ||= ARGF.readlines.reject { |line| line.start_with? "#" }.map(&:chomp) end end