$| = 1; my %seen = (); my $carry = ""; my $nextn = 1; sub nexta { my $length = 1; my $n = shift; while (1) { if (length($carry) < $length) { $carry .= $nextn++; } elsif ((not exists $seen{ substr($carry, 0, $length) }) && substr($carry, 0, $length) ne $n && ( length($carry)==$length || substr($carry, $length, 1) ne "0")) { last; } else { $length++; } } my $a = substr($carry, 0, $length); $seen{$a} = 1; $carry = substr($carry, $length); return $a; } my @a = (); my $maxa = 0; foreach my $n (1..10000) { my $a = nexta($n); # print "$n $a\n"; # print "$a,"; push @a => $a; if ($maxa < $a) { $maxa = $a; } } foreach my $a (@a) { print "#" x (log($a)/log($maxa)*1000), "\r\n"; }