AocHelpers.UnionRange (aoc_helpers v0.5.0)
Represents a union of ranges of step 1. Ranges with step -1 are allowed but converted to step 1.
Link to this section Summary
Link to this section Functions
Link to this function
new(range)
Build a new UnionRange
examples
Examples
iex> AocHelpers.UnionRange.new(1..2)
%AocHelpers.UnionRange{ranges: [1..2]}
iex> AocHelpers.UnionRange.new(2..1)
%AocHelpers.UnionRange{ranges: [1..2]}
iex> AocHelpers.UnionRange.new([4..6, 2..1])
%AocHelpers.UnionRange{ranges: [1..2, 4..6]}
iex> AocHelpers.UnionRange.new([4..6, 3..1])
%AocHelpers.UnionRange{ranges: [1..6]}
iex> AocHelpers.UnionRange.new([4..6, 2..1, -3..-1])
%AocHelpers.UnionRange{ranges: [-3..-1, 1..2, 4..6]}
Link to this function
union(union_range, range)
Union two UnionRanges or an UnionRange and a Range.
examples
Examples
iex> AocHelpers.UnionRange.new(1..2) |>AocHelpers.UnionRange.union(4..5)
%AocHelpers.UnionRange{ranges: [1..2, 4..5]}
iex> AocHelpers.UnionRange.new(2..0) |> AocHelpers.UnionRange.union(AocHelpers.UnionRange.new([5..6, 1..3]))
%AocHelpers.UnionRange{ranges: [0..3, 5..6]}
iex> AocHelpers.UnionRange.new(1..2) |>AocHelpers.UnionRange.union(3..5)
%AocHelpers.UnionRange{ranges: [1..5]}
iex> AocHelpers.UnionRange.new([4..6, 2..1, -3..-1])
%AocHelpers.UnionRange{ranges: [-3..-1, 1..2, 4..6]}
Link to this function