id 0 1 2 3 4 5 |------------------- 0| 4,-1,-2,-2, 0,-1 1| -1, 5, 0, 2,-3, 1 2| -2, 0, 6, 1,-3, 5 3| -2, 2, 1, 7,-3, 0 4| 0,-3,-3,-3, 8,-3 5| -1, 1, 5, 0,-3, 9 #### let k = 3 then 3,4,5 -> score 7+8+9 = 24 > 17 0,1,2 -> score 4+5+6 = 15 < 17 #### 2->5 = 5 3->3 = 7 4->4 = 8 so 2,3,4 -> 5,3,4 = 5+7+8 = 20 > 17 #### #!/usr/bin/perl use strict; my $MTX = [ [4,-1,-2,-2, 0,-1], [-1,5, 0, 2,-3, 1], [-2,0, 6, 1,-3, 5], [-2,2, 1, 7,-3, 0], [0,-3,-3,-3, 8,-3], [-1,1, 5, 0,-3, 9], ]; for (my $i =0; $i<6; $i++){ for(my $j = 0; $j< 6; $j++){ for(my $k = 0; $k< 6; $k++){ my $sc = ($MTX->[$i]->[$i] + $MTX->[$j]->[$j] + $MTX->[$k]->[$k]); if ($sc < 17){ next; }else{ for (my $ii =0; $ii<6; $ii++){ for(my $jj = 0; $jj< 6; $jj++){ for(my $kk = 0; $kk< 6; $kk++){ my $score = ($MTX->[$i]->[$ii] + $MTX->[$j]->[$jj] + $MTX->[$k]->[$kk]); if($score > 17){ print " $i,$j,$k -> $ii,$jj,$kk = $score\n"; } } } } } } } } #### score(2->5) < score(2->2) #### 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