#!/usr/bin/perl

# Idiom #308 Integer to string in base b

sub int_to_base_str {
    my ($n, $b) = @_;
    my $digits = '0123456789abcdefghijklmnopqrstuvwxyz';
    my ($s, $q, $remainder) = ('');

    return '0' if $n == 0;

    use integer;

    while ($n) {
        ($n, $remainder) = ($n / $b, $n % $b), 
        $s = substr($digits, $remainder, 1) . $s;
    }

    return $s
}

my @tests = (
    [17,3],   # 122
    [18,3],   # 200
    [19,3],   # 201
    [26,5],   # 101
    [121,12], # "a1"
);

foreach my $t ( @tests ) {
    my ($n, $b) = @{ $t }; # deference $t list ref
    printf "%5d %5d   %s\n", $n, $b, int_to_base_str( $n, $b );
}
