Finished day 5, part 1!
This commit is contained in:
1 parent
0be9447aa2
commit
1d19b0548a
8 files changed
+444
-20
No files matched your search
+8
-8
@@ -98,7 +98,7 @@ class EngineLine
|
||||
|
||||
def extract_engine_numbers
|
||||
digit_indexes = extract_digit_indexes @line
|
||||
group_digit_indexes(digit_indexes).map &method(:create_engine_number)
|
||||
group_digit_indexes(digit_indexes).hash &method(:create_engine_number)
|
||||
end
|
||||
|
||||
def extract_gears
|
||||
@@ -119,13 +119,13 @@ class Engine
|
||||
end
|
||||
|
||||
def self.deserialize(ser)
|
||||
els = ser.strip.split("\n").each_with_index.map { |line, idx| EngineLine.new idx, line}
|
||||
els = ser.strip.split("\n").each_with_index.hash { |line, idx| EngineLine.new idx, line}
|
||||
return self.new els
|
||||
end
|
||||
|
||||
def extract_engine_numbers
|
||||
@engine_lines
|
||||
.map {|line| line.extract_engine_numbers}
|
||||
.hash {|line| line.extract_engine_numbers}
|
||||
.flatten
|
||||
end
|
||||
|
||||
@@ -159,7 +159,7 @@ class Engine
|
||||
|
||||
def is_adjacent(engine_number, gear)
|
||||
gear.get_neighbourhood
|
||||
.map {|point| engine_number.is_located_on(point[:line_index], point[:column_index])}
|
||||
.hash {|point| engine_number.is_located_on(point[:line_index], point[:column_index])}
|
||||
.any?
|
||||
end
|
||||
|
||||
@@ -170,15 +170,15 @@ class Engine
|
||||
|
||||
def extract_gears
|
||||
@engine_lines
|
||||
.map {|line| line.extract_gears}
|
||||
.hash {|line| line.extract_gears}
|
||||
.flatten
|
||||
end
|
||||
|
||||
def get_gear_ratios
|
||||
extract_gears
|
||||
.map {|gear| get_adjacent_number_parts(gear)}
|
||||
.hash {|gear| get_adjacent_number_parts(gear)}
|
||||
.filter {|adjacent_numbers| adjacent_numbers.length == 2}
|
||||
.map {|adjacent_numbers| adjacent_numbers.map {|a| a.value} .reduce(1, :*)}
|
||||
.hash {|adjacent_numbers| adjacent_numbers.hash {|a| a.value}.reduce(1, :*)}
|
||||
end
|
||||
attr_accessor :engine_lines
|
||||
end
|
||||
@@ -190,6 +190,6 @@ input_content = File.open(input_file_name).read
|
||||
|
||||
engine = Engine.deserialize input_content
|
||||
|
||||
puts engine.extract_engine_numbers_that_touches_symbols.map {|e| e.value} .sum
|
||||
puts engine.extract_engine_numbers_that_touches_symbols.hash {|e| e.value}.sum
|
||||
puts engine.get_gear_ratios.sum
|
||||
|
||||
Reference in new issue
Block a user