#!/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) = ('');
use integer;
while ($n) {
($n, $remainder) = ($n / $b, $n % $b),
$s = substr($digits, $remainder, 1) . $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 ); }
IyEvdXNyL2Jpbi9wZXJsCgojIElkaW9tICMzMDggSW50ZWdlciB0byBzdHJpbmcgaW4gYmFzZSBiCgpzdWIgaW50X3RvX2Jhc2Vfc3RyIHsKICAgIG15ICgkbiwgJGIpID0gQF87CiAgICBteSAkZGlnaXRzID0gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eic7CiAgICBteSAoJHMsICRxLCAkcmVtYWluZGVyKSA9ICgnJyk7CgogICAgcmV0dXJuICcwJyBpZiAkbiA9PSAwOwoKICAgIHVzZSBpbnRlZ2VyOwoKICAgIHdoaWxlICgkbikgewogICAgICAgICgkbiwgJHJlbWFpbmRlcikgPSAoJG4gLyAkYiwgJG4gJSAkYiksIAogICAgICAgICRzID0gc3Vic3RyKCRkaWdpdHMsICRyZW1haW5kZXIsIDEpIC4gJHM7CiAgICB9CgogICAgcmV0dXJuICRzCn0KCm15IEB0ZXN0cyA9ICgKICAgIFsxNywzXSwgICAjIDEyMgogICAgWzE4LDNdLCAgICMgMjAwCiAgICBbMTksM10sICAgIyAyMDEKICAgIFsyNiw1XSwgICAjIDEwMQogICAgWzEyMSwxMl0sICMgImExIgopOwoKZm9yZWFjaCBteSAkdCAoIEB0ZXN0cyApIHsKICAgIG15ICgkbiwgJGIpID0gQHsgJHQgfTsgIyBkZWZlcmVuY2UgJHQgbGlzdCByZWYKICAgIHByaW50ZiAiJTVkICU1ZCAgICVzXG4iLCAkbiwgJGIsIGludF90b19iYXNlX3N0ciggJG4sICRiICk7Cn0K