pub fn min_repeating_len<T: Eq>(xs: &[T]) -> usize
Expand description

Given a slice with nonzero length $\ell$, returns the smallest $n$ such that the slice consists of $n/\ell$ copies of a length-$\ell$ subslice.

Typically $\ell = n$.

Worst-case complexity

$T(n) = O(n^{1+\epsilon})$ for all $\epsilon > 0$

$M(n) = O(n)$

where $T$ is time, $M$ is additional memory, and $n$ is xs.len().

Panics

Panics if xs is empty.

Examples

use malachite_base::slices::min_repeating_len;

assert_eq!(min_repeating_len(&[1, 2, 1, 2, 1, 2]), 2);
assert_eq!(min_repeating_len(&[1, 2, 1, 2, 1, 3]), 6);
assert_eq!(min_repeating_len(&[5, 5, 5]), 1);