collapse
Counts and collapses runs of identical values in a container.
Syntax
-
collapse(L)
-
L
is a list or some other suitable container
-
-
collapse(L, ε)
-
L
is a list or some other suitable container -
ε
is a non-negative number
-
Description
If L
is a list or some other suitable container, then collapse(L)
returns the list obtained from L
by replacing each run of identical elements x
of length c
(possibly 1) by the pair (x, c)
.
collapse(L, ε)
has the same behaviour, except that floating-point comparisons are made with epsilon ε
.
Examples
L ≔ '(3, 2, 2, 2, 2, 5, 1, 0, 0, 0, 0, 2, 3, 4, 4, 4, 1);
collapse(L)
(3, 1) (2, 4) (5, 1) (1, 1) (0, 4) (2, 1) (3, 1) (4, 3) (1, 1)
collapse(characters("aaaaabbcbbaaccccac"))
(a, 5) (b, 2) (c, 1) (b, 2) (a, 2) (c, 4) (a, 1) (c, 1)
join(filter(collapse(SequenceList(2, 100) @ IsPrime), (x ↦ ¬x[1])) @ (x ↦ x[2]))
1, 1, 3, 1, 3, 1, 3, 5, 1, 5, 3, 1, 3, 5, 5, 1, 5, 3, 1, 5, 3, 5, 7, 3