comparison day5b.rb @ 15:5c8d2d181b94

Remove an unnecessary level of nesting The `reduce` now just passes through the remaining part of each range to future range transforms
author IBBoard <dev@ibboard.co.uk>
date Sat, 09 Dec 2023 20:12:17 +0000
parents dcc060e59c47
children
comparison
equal deleted inserted replaced
14:dcc060e59c47 15:5c8d2d181b94
35 mappings = mappings_array.map {|mapping| [mapping.from, mapping]}.to_h 35 mappings = mappings_array.map {|mapping| [mapping.from, mapping]}.to_h
36 36
37 def map_with_override(mappings, inputs) 37 def map_with_override(mappings, inputs)
38 inputs.flat_map do |input| 38 inputs.flat_map do |input|
39 processed = [] 39 processed = []
40 reduced_unprocessed = mappings.ranges.reduce(input) do |unprocessed, mapping| 40 reduced_unprocessed = mappings.ranges.reduce(input) do |input_range, mapping|
41 if unprocessed.nil? 41 if input_range.nil?
42 nil 42 nil
43 elsif mapping.source_range.end <= input_range.begin or input_range.end <= mapping.source_range.begin 43 elsif mapping.source_range.end <= input_range.begin or input_range.end <= mapping.source_range.begin
44 # Input is entirely outside the mapped range 44 # Input is entirely outside the mapped range
45 input_range 45 input_range
46 elsif mapping.source_range.cover?(input_range) 46 elsif mapping.source_range.cover?(input_range)
55 # Must straddle the end 55 # Must straddle the end
56 processed << ((input_range.begin+mapping.offset)...(mapping.source_range.end+mapping.offset)) 56 processed << ((input_range.begin+mapping.offset)...(mapping.source_range.end+mapping.offset))
57 (mapping.source_range.end)...(input_range.end) 57 (mapping.source_range.end)...(input_range.end)
58 end 58 end
59 end 59 end
60 processed + reduced_unprocessed 60 if ! reduced_unprocessed.nil?
61 processed << reduced_unprocessed
62 end
63 processed
61 end 64 end
62 end 65 end
63 66
64 steps = ["seed", "soil", "fertilizer", "water", "light", "temperature", "humidity"] 67 steps = ["seed", "soil", "fertilizer", "water", "light", "temperature", "humidity"]
65 68