#!/usr/local/bin/perl -w

# A Perl based base 26

$a='a';
for $i (1..1000000) {
    $b = decode26($a);
    $c = code26($i);
#    if ($a ne $c){
	print "$i $a $b $c\n";
#    }
    $a++;
}       


sub code26{
    my $coci = shift;
    my $code = "";
    my $rest = 0;
    while ($coci>26){
	$rest = $coci % 26;
	if ($rest==0) { $rest=26; $coci--; }
	$code .= chr(ord("a")+$rest-1);
	$coci = int $coci /26;
    }
    $code .= chr(ord("a")+$coci-1);
    return reverse $code;
}

sub decode26{
    my $a = shift;        
    my @b = reverse split //, $a;
    my $count=0;
    my $sum=0;
    for my $c (@b){
	$sum += (ord($c)-ord("a")+1)*(26**$count);
	$count++;
    }
    return $sum;
}

__END__
