fork download
  1. #!/usr/bin/perl
  2.  
  3. # Idiom #308 Integer to string in base b
  4.  
  5. sub int_to_base_str {
  6. my ($n, $b) = @_;
  7. my $digits = '0123456789abcdefghijklmnopqrstuvwxyz';
  8. my ($s, $q, $remainder) = ('');
  9.  
  10. return '0' if $n == 0;
  11.  
  12. use integer;
  13.  
  14. while ($n) {
  15. ($n, $remainder) = ($n / $b, $n % $b),
  16. $s = substr($digits, $remainder, 1) . $s;
  17. }
  18.  
  19. return $s
  20. }
  21.  
  22. my @tests = (
  23. [17,3], # 122
  24. [18,3], # 200
  25. [19,3], # 201
  26. [26,5], # 101
  27. [121,12], # "a1"
  28. );
  29.  
  30. foreach my $t ( @tests ) {
  31. my ($n, $b) = @{ $t }; # deference $t list ref
  32. printf "%5d %5d %s\n", $n, $b, int_to_base_str( $n, $b );
  33. }
  34.  
Success #stdin #stdout 0.01s 5476KB
stdin
Standard input is empty
stdout
   17     3   122
   18     3   200
   19     3   201
   26     5   101
  121    12   a1