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

Functions

Build a new UnionRange

Union two UnionRanges or an UnionRange and a Range.

Link to this section Functions

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

valid_range?(arg1)