IteratingOps

trait IteratingOps extends SlicingOps

Provides operations returning iterators of sequences for a Seq considered circular.

class Object
trait Matchable
class Any
object RingSeq.type

Type members

Inherited types

type Index = Int

For improved readability, the index of a Seq.

For improved readability, the index of a Seq.

Inherited from:
IndexingOps
type IndexO = Int

For improved readability, the index of a circular Seq.

For improved readability, the index of a circular Seq.

Note:

any value is a valid index, provided that Seq is not empty

Inherited from:
IndexingOps

Extensions

Extensions

extension [A, CC <: (SeqOps)](ring: CC[A])
def reflections: Iterator[CC[A]]

Computes all the reflections of this circular sequence

Computes all the reflections of this circular sequence

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))
def reversions: Iterator[CC[A]]

Computes all the reversions of this circular sequence

Computes all the reversions of this circular sequence

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))
def rotations: Iterator[CC[A]]

Computes all the rotations of this circular sequence

Computes all the rotations of this circular sequence

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))
def rotationsAndReflections: Iterator[CC[A]]

Computes all the rotations and reflections of this circular sequence

Computes all the rotations and reflections of this circular sequence

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))
def slidingO(size: Int, step: Int): Iterator[CC[A]]

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

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 extensions

extension [A, CC <: (SeqOps)](ring: CC[A])
def containsSliceO(slice: Seq[A]): Boolean

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

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
def indexOfSliceO(that: Seq[A], from: IndexO): Index

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

IndexO

that

the sequence to test

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
def lastIndexOfSliceO(that: Seq[A], end: IndexO): Index

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

IndexO

that

the sequence to test

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
def segmentLengthO(p: A => Boolean, from: IndexO): Int

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

IndexO

p

the predicate used to test elements

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
def sliceO(from: IndexO, to: IndexO): CC[A]

Selects an interval of elements.

Selects an interval of elements.

Value parameters:
from

IndexO

until

IndexO

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
extension [A, CC <: (SeqOps)](ring: CC[A])
def applyO(i: IndexO): A

Gets the element at some circular index.

Gets the element at some circular index.

Value parameters:
i

IndexO

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

Normalize a given index of a circular Seq

Value parameters:
i

IndexO

Inherited from:
IndexingOps
extension [A, CC <: (SeqOps)](ring: CC[A])
def reflectAt(i: IndexO): CC[A]

Reflects the sequence to start at some circular index.

Reflects the sequence to start at some circular index.

Value parameters:
i

IndexO

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
def rotateLeft(step: Int): CC[A]

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

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
def rotateRight(step: Int): CC[A]

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

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
def startAt(i: IndexO): CC[A]

Rotates the sequence to start at some circular index.

Rotates the sequence to start at some circular index.

Value parameters:
i

IndexO

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