#! /usr/bin/perl -w
use strict;
use Math::BaseCalc;
my $b36 = Math::BaseCalc->new( digits => [0..9, 'a' .. 'z'] );
my $b64 = Math::BaseCalc->new( digits => [0..9, 'a' .. 'z', 'A' .. 'Z', '-', '_' ] );
my $num;
for $num( @ARGV ) {
print "$num\n";
print "\t in base 36 = ", $b36->to_base($num), "\n";
print "\t in base 64 = ", $b64->to_base($num), "\n\n";
}
####
% ./b36 1 10 1000 1000000 100000000 1000000000
1
in base 36 = 1
in base 64 = 1
10
in base 36 = a
in base 64 = a
1000
in base 36 = rs
in base 64 = fE
1000000
in base 36 = lfls
in base 64 = 3Q90
100000000
in base 36 = 1njchs
in base 64 = 5Zu40
1000000000
in base 36 = gjdgxs
in base 64 = XCIE0
####
my @prev = (0,0,0);
my @n = (0,0,0);
my $num = 0;
{
$n[0] = ++$num;
$n[1] = $b36->to_base($num);
$n[2] = $b64->to_base($num);
if( grep { $prev[$_] < length($n[$_]) } 0..2 ) {
print join( ' ', @n ), "\n";
}
$prev[$_] = length($n[$_]) for 0..2;
redo;
}
####
1 1 1
10 a a
36 10 A
64 1s 10
100 2s 1A
1000 rs fE
1296 100 kg
4096 35s 100
10000 7ps 2sg
46656 1000 bp0
100000 255s oqw
262144 5m9s 1000
1000000 lfls 3Q90
1679616 10000 6q40
10000000 5yc1s C9q0
16777216 9zlds 10000
60466176 100000 3CGg0
100000000 1njchs 5Zu40
####
#! /usr/local/bin/perl -w
use strict;
use Math::BaseCalc;
use List::Util qw/min/;
my @base = (10, 36, 64);
my @cvt = (
Math::BaseCalc->new( digits => [0..9] ),
Math::BaseCalc->new( digits => [0..9, 'a' .. 'z'] ),
Math::BaseCalc->new( digits => [0..9, 'a' .. 'z', 'A' .. 'Z', '-', '_' ] ),
);
my @power = (0, 0, 0);
my @result = (0, 0, 0);
{
my $min = min( @result );
print join( ' ', map { $cvt[$_]->to_base($min)
. '(' . length($cvt[$_]->to_base($min)) . ')' } 0..2 ), "\n";
for( my $j = 0; $j < @power; ++$j ) {
if( $result[$j] == $min ) {
$power[$j]++;
$result[$j] = $base[$j] ** $power[$j];
}
}
redo;
}
####
0(1) 0(1) 0(1)
10(2) a(1) a(1)
36(2) 10(2) A(1)
64(2) 1s(2) 10(2)
100(3) 2s(2) 1A(2)
1000(4) rs(2) fE(2)
1296(4) 100(3) kg(2)
4096(4) 35s(3) 100(3)
10000(5) 7ps(3) 2sg(3)
46656(5) 1000(4) bp0(3)
100000(6) 255s(4) oqw(3)
262144(6) 5m9s(4) 1000(4)
1000000(7) lfls(4) 3Q90(4)
1679616(7) 10000(5) 6q40(4)
10000000(8) 5yc1s(5) C9q0(4)
16777216(8) 9zlds(5) 10000(5)
60466176(8) 100000(6) 3CGg0(5)
100000000(9) 1njchs(6) 5Zu40(5)
1000000000(10) gjdgxs(6) XCIE0(5)
1073741824(10) hra0hs(6) 100000(6)
2176782336(10) 1000000(7) 21LN00(6)
10000000000(11) 4ldqpds(7) 9k2-g0(6)
68719476736(11) vkhsvls(7) 1000000(7)
78364164096(11) 10000000(8) 18-TA00(7)
100000000000(12) 19xtf1ts(8) 1t8tKw0(7)
1000000000000(13) cre66i9s(8) ezkFh00(7)
2821109907456(13) 100000000(9) F3ngg00(7)
4398046511104(13) 1k4fnc6ps(9) 10000000(8)
10000000000000(14) 3jlxpt2ps(9) 2hxesG00(8)
100000000000000(15) zg3d62r5s(9) mLcguA00(8)
101559956668416(15) 1000000000(10) n5V59000(8)
281474976710656(15) 2rrvthnxts(10) 100000000(9)
1000000000000000(16) 9ugxnorjls(10) 3znWANE00(9)
3656158440062976(16) 10000000000(11) c_k6V4000(9)
10000000000000000(17) 2qgpckvng1s(11) zxL9LMg00(9)