Math::NumSeq::Runs -- runs of consecutive integers


 use Math::NumSeq::Runs;
 my $seq = Math::NumSeq::Runs->new;
 my ($i, $value) = $seq->next;


This is various kinds of runs of integers. The runs_type parameter (a string) can be

    "0toN"      0, 0,1, 0,1,2, 0,1,2,3, etc runs 0..N
    "1toN"      1, 1,2, 1,2,3, 1,2,3,4, etc runs 1..N
    "1to2N"     1,2, 1,2,3,4, 1,2,3,4,5,6 etc runs 1..2N
    "1to2N+1"   1, 1,2,3, 1,2,3,4,5, etc runs 1..2N+1
    "1toFib"    1, 1, 1,2, 1,2,3,  1,2,3,4,5 etc runs 1..Fibonacci
    "Nto0"      0, 1,0, 2,1,0, 3,2,1,0, etc runs N..0
    "Nto1"      1, 2,1, 3,2,1, 4,3,2,1, etc runs N..1
    "0toNinc"   0, 1,2, 2,3,4, 3,4,5,6, etc runs 0..N increasing
    "Nrep"      1, 2,2, 3,3,3, 4,4,4,4, etc N repetitions of N
    "N+1rep"    0, 1,1, 2,2,2, 3,3,3,3, etc N+1 repetitions of N
    "2rep"      0,0, 1,1, 2,2, etc two repetitions of each N
    "3rep"      0,0,0, 1,1,1, 2,2,2, etc three repetitions of N

"0toN" and "1toN" differ only the latter being +1. They're related to the triangular numbers (Math::NumSeq::Triangular) in that each run starts at index i=Triangular+1, ie. i=1,2,4,7,11,etc.

"1to2N" is related to the pronic numbers (Math::NumSeq::Pronic) in that each run starts at index i=Pronic+1, ie. i=1,3,7,13,etc.

"1toFib" not only runs up to each Fibonacci number (Math::NumSeq::Fibonacci), but the runs start at i=Fibonacci too, ie. i=1,2,3,5,8,13,etc. This arises because the cumulative total of Fibonacci numbers has F[1]+F[2]+...+F[k]+1 = F[k+2].


See "FUNCTIONS" in Math::NumSeq for behaviour common to all sequence classes.

$seq = Math::NumSeq::Runs->new (runs_type => $str)

Create and return a new sequence object.

Random Access

$value = $seq->ith($i)

Return the $i'th value from the sequence.

$bool = $seq->pred($value)

Return true if $value occurs in the sequence. This is merely all integer $value >= 0 or >= 1 according to the start of the runs_type.


Math::NumSeq, Math::NumSeq::AllDigits



Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2019, 2020 Kevin Ryde

Math-NumSeq is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

Math-NumSeq is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Math-NumSeq. If not, see <>.