RingSeq
Adds implicit methods to scala.collection.Seq
(immutable / mutable and subtypes) for when a sequence needs to be considered circular, its elements forming a ring.
Attributes
- Graph
-
- Supertypes
-
trait SymmetryOpstrait ComparingOpstrait IteratingOpstrait SlicingOpstrait TransformingOpstrait IndexingOpsclass Objecttrait Matchableclass AnyShow all
- Self type
-
RingSeq.type
Members list
Type members
Inherited types
For improved readability, the index of a Seq
.
For improved readability, the index of a circular Seq
.
For improved readability, the index of a circular Seq
.
Attributes
- Note
-
any value is a valid index, provided that
Seq
is not empty - Inherited from:
- IndexingOps
Extensions
Inherited extensions
Computes the order of rotational symmetry possessed by this circular sequence.
Computes the order of rotational symmetry possessed by this circular sequence.
Attributes
- Returns
-
the number >= 1 of rotations in which this circular sequence looks exactly the same.
- Example
-
Seq(0, 1, 2, 0, 1, 2).rotationalSymmetry // 2
- Inherited from:
- SymmetryOps
Computes the order of reflectional (mirror) symmetry possessed by this circular sequence.
Computes the order of reflectional (mirror) symmetry possessed by this circular sequence.
Attributes
- Returns
-
the number >= 0 of reflections in which this circular sequence looks exactly the same.
- Example
-
Seq(2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2).symmetry // 4
- Inherited from:
- SymmetryOps
Finds the indices of each element of this circular sequence close to an axis of reflectional symmetry.
Finds the indices of each element of this circular sequence close to an axis of reflectional symmetry.
Attributes
- Returns
-
the indices of each element of this circular sequence close to an axis of reflectional symmetry, that is a line of symmetry that splits the sequence in two identical halves.
- Example
-
Seq(2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2).symmetryIndices // List(1, 4, 7, 10)
- Inherited from:
- SymmetryOps
Tests whether this circular sequence contains a given sequence as a slice.
Tests whether this circular sequence contains a given sequence as a slice.
Value parameters
- that
-
the sequence to test
Attributes
- Returns
-
true if this circular sequence contains a slice with the same elements as ''that'', otherwise false.
- Example
-
Seq(0, 1, 2).containsSliceO(Seq(2, 0, 1, 2, 0)) // true
- Inherited from:
- SlicingOps
Finds first index after or at a start index where this circular sequence contains a given sequence as a slice.
Finds first index after or at a start index where this circular sequence contains a given sequence as a slice.
Value parameters
- from
- that
-
the sequence to test
Attributes
- Returns
-
the first index >= ''from'' such that the elements of this circular sequence starting at this index match the elements of sequence ''that'', or -1 if no such subsequence exists.
- Example
-
Seq(0, 1, 2).indexOfSliceO(Seq(2, 0, 1, 2, 0)) // 2
- Inherited from:
- SlicingOps
Finds last index before or at a given end index where this circular sequence contains a given sequence as a slice.
Finds last index before or at a given end index where this circular sequence contains a given sequence as a slice.
Value parameters
- end
- that
-
the sequence to test
Attributes
- Returns
-
the last index <= ''end'' such that the elements of this circular sequence starting at this index match the elements of sequence ''that'', or -1 if no such subsequence exists.
- Example
-
Seq(0, 1, 2, 0, 1, 2).lastIndexOfSliceO(Seq(2, 0)) // 5
- Inherited from:
- SlicingOps
Computes the length of the longest segment that starts from some circular index and whose elements all satisfy some predicate.
Computes the length of the longest segment that starts from some circular index and whose elements all satisfy some predicate.
Value parameters
- from
- p
-
the predicate used to test elements
Attributes
- Returns
-
the length of the longest segment of this sequence starting from circular index ''from'' such that every element of the segment satisfies the predicate ''p''
- Example
-
Seq(0, 1, 2).segmentLengthO(_ % 2 == 0, 2) // 2
- Inherited from:
- SlicingOps
Selects an interval of elements.
Selects an interval of elements.
Value parameters
Attributes
- Returns
-
a sequence containing the elements greater than or equal to circular index ''from'' extending up to (but not including) circular index ''until'' of this sequence.
- Note
-
a slice of a circular sequence can be bigger than the size of the elements in the sequence.
- Example
-
Seq(0, 1, 2).sliceO(-1, 4) // Seq(2, 0, 1, 2, 0)
- Inherited from:
- SlicingOps
Tests whether this circular sequence is a reflection of a given sequence.
Tests whether this circular sequence is a reflection of a given sequence.
Value parameters
- that
-
the sequence to test
Attributes
- Returns
-
true if this circular sequence is a reflection of ''that'', otherwise false.
- Example
-
Seq(0, 1, 2).isReflectionOf(Seq(0, 2, 1)) // true
- Inherited from:
- ComparingOps
Tests whether this circular sequence is a reversion of a given sequence.
Tests whether this circular sequence is a reversion of a given sequence.
Value parameters
- that
-
the sequence to test
Attributes
- Returns
-
true if this circular sequence is a reversion of ''that'', otherwise false.
- Example
-
Seq(0, 1, 2).isReversionOf(Seq(2, 1, 0)) // true
- Inherited from:
- ComparingOps
Tests whether this circular sequence is a rotation of a given sequence.
Tests whether this circular sequence is a rotation of a given sequence.
Value parameters
- that
-
the sequence to test
Attributes
- Returns
-
true if this circular sequence is a rotation of ''that'', otherwise false.
- Example
-
Seq(0, 1, 2).isRotationOf(Seq(1, 2, 0)) // true
- Inherited from:
- ComparingOps
Tests whether this circular sequence is a rotation or a reflection of a given sequence.
Tests whether this circular sequence is a rotation or a reflection of a given sequence.
Value parameters
- that
-
the sequence to test
Attributes
- Returns
-
true if this circular sequence is a rotation or a reflection of ''that'', otherwise false.
- Example
-
Seq(0, 1, 2).isRotationOrReflectionOf(Seq(2, 0, 1)) // true
- Inherited from:
- ComparingOps
Reflects the sequence to start at some circular index.
Reflects the sequence to start at some circular index.
Value parameters
- i
Attributes
- Returns
-
a sequence consisting of all elements reversed and rotated to start at circular index ''i''.
- Example
-
Seq(0, 1, 2).reflectAt() // Seq(0, 2, 1)
- Inherited from:
- TransformingOps
Rotates the sequence to the left by some steps.
Rotates the sequence to the left by some steps.
Value parameters
- step
-
the circular distance between each old and new position
Attributes
- Returns
-
a sequence consisting of all elements rotated to the left by ''step'' places. If ''step'' is negative the rotation happens to the right.
- Example
-
Seq(0, 1, 2).rotateLeft(1) // Seq(1, 2, 0)
- Inherited from:
- TransformingOps
Rotate the sequence to the right by some steps.
Rotate the sequence to the right by some steps.
Value parameters
- step
-
the circular distance between each new and old position
Attributes
- Returns
-
a sequence consisting of all elements rotated to the right by ''step'' places. If ''step'' is negative the rotation happens to the left.
- Example
-
Seq(0, 1, 2).rotateRight(1) // Seq(2, 0, 1)
- Inherited from:
- TransformingOps
Rotates the sequence to start at some circular index.
Rotates the sequence to start at some circular index.
Value parameters
- i
Attributes
- Returns
-
a sequence consisting of all elements rotated to start at circular index ''i''. It is equivalent to rotateLeft.
- Example
-
Seq(0, 1, 2).startAt(1) // Seq(1, 2, 0)
- Inherited from:
- TransformingOps
Computes all the reflections of this circular sequence
Computes all the reflections of this circular sequence
Attributes
- Returns
-
An iterator producing the 2 sequences obtained by reflecting this circular sequence, starting from itself, or just itself if empty.
- Example
-
Seq(0, 1, 2).reflections // Iterator(Seq(0, 1, 2), Seq(0, 2, 1))
- Inherited from:
- IteratingOps
Computes all the reversions of this circular sequence
Computes all the reversions of this circular sequence
Attributes
- Returns
-
An iterator producing the 2 sequences obtained by reversing this circular sequence, starting from itself, or just itself if empty.
- Example
-
Seq(0, 1, 2).reversions // Iterator(Seq(0, 1, 2), Seq(2, 1, 0))
- Inherited from:
- IteratingOps
Computes all the rotations of this circular sequence
Computes all the rotations of this circular sequence
Attributes
- Returns
-
An iterator producing all the sequences obtained by rotating this circular sequence, starting from itself and moving one rotation step to the right, or just itself if empty.
- Example
-
Seq(0, 1, 2).rotations // Iterator(Seq(0, 1, 2), Seq(1, 2, 0), Seq(2, 0, 1))
- Inherited from:
- IteratingOps
Computes all the rotations and reflections of this circular sequence
Computes all the rotations and reflections of this circular sequence
Attributes
- Returns
-
An iterator producing all the sequences obtained by rotating and reflecting this circular sequence, starting from itself and moving one rotation step to the right, then reflecting and doing the same, or just itself if empty.
- Example
-
Seq(0, 1, 2).rotationsAndReflections // Iterator(Seq(0, 1, 2), Seq(1, 2, 0), Seq(2, 0, 1), Seq(0, 2, 1), Seq(2, 1, 0), Seq(1, 0, 2))
- Inherited from:
- IteratingOps
Groups elements in fixed size blocks by passing a "sliding window" over them
Groups elements in fixed size blocks by passing a "sliding window" over them
Value parameters
- size
-
the number of elements per group
- step
-
the distance between the first elements of successive groups
Attributes
- Returns
-
An iterator producing sequences of size ''size''.
- Example
-
Seq(0, 1, 2).slidingO(2) // Iterator(Seq(0, 1), Seq(1, 2), Seq(2, 0))
- Inherited from:
- IteratingOps
Gets the element at some circular index.
Gets the element at some circular index.
Value parameters
- i
Attributes
- Throws
-
java.lang.ArithmeticException
if
Seq
is empty - Example
-
Seq(0, 1, 2).applyO(3) // 0
- Inherited from:
- IndexingOps
Normalize a given index of a circular Seq