Mercurial > repos > other > adventofcode2023
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 |