my $k = 3; for (my $i =0; $i<6**$k; $i++){ my $t = &decode($i, 6,$k); print "@{$t}\n"; } sub decode{ my ($int, $alpha, $k) = @_; my $r = 0; my $e = $int; my $rq = 0; my $rr = 0; my $p = 0; my @aa; my $j = $k-1; my $i = 0; for($i=0; $i < $k-1 ;$i++, $j--){ $p = $alpha**$j; $rr = $e%$p; $rq = $e/$p; $aa[$i] = int($rq); $e = $rr; } $aa[$i] = $e; return \@aa; } =pod ## for starting with 1 instead of 0 sub decode{ my ($int, $alpha, $k) = @_; my $r = 0; my $e = $int; my $rq = 0; my $rr = 0; my $p = 0; my @aa; my $j = $k-1; my $i = 0; for($i=0; $i < $k-1 ;$i++, $j--){ $p = $alpha**$j; $rr = $e%$p; $rq = $e/$p; if($rr == 0){ $rr = ($e-1)%$p; $rq = ($e-1)/$p; $r = 1; } $aa[$i] = int($rq); $e = $rr; } $aa[$i] = $e+$r-1; return \@aa; } =cut