Uma abordagem usando perl
operador regex experimental de (??{...})
para sequências de 3 ou mais números decimais em sequência linear:
perl -lne 'print if m{^(\d+)(\d+)(?=(.+$))(??{
my $i = $2; my $r; my $l = length $3; my $incr = $2 - $1;
while (length($r) < $l) {$i += $incr; $r .= $i}; $r})$}'
Tenha em atenção que 000000
é 0000, 0, 0 ou 0, 0, 0, 0, 0, 0 e também 1023
, ou seja, 1, 02, 3, mas o modo como funciona , não em 1203
como funciona, para a parte depois dos 2 primeiros números, ele espera uma lista de números sem 0s iniciais.
Da mesma forma, ele relata 10-1
, mas não -101
, pois -
não é esperado nos dois primeiros números.
Você poderia resolver isso com:
perl -lne 'print if m{^(-?\d+)(-?\d+)(?=(.+$))(??{
my $i = $2; my $r, $sign, $value; my $m = $3; my $incr = $2 - $1;
while (($i += $incr),
(($sign, $value) = ($i =~ /(-?)(\d*)/)),
$m =~ /^(${sign}0*$value)(.*)/) {
$r .= $1; $m = $2;
}; $r})$}'
Com o qual ele informaria 12000034
, -101
, -1-2-3
, 0-123-246
...