#! /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; }