----- Original Message ----
> From: Larry Wall <[EMAIL PROTECTED]>
>
> You should not need "my" on the right side of a ->. Also, you should
> be able to write $arg_for<count> for constant subscripts.
Thanks! The revised script is below for those who are interested.
Cheers,
Ovid
-
my %buckets = (
'w' => {
'count' => 4,
'scale' => 10.5,
'array' => [],
},
'x' => {
'count' => 6,
'scale' => 7,
'array' => [],
},
'y' => {
'count' => 12,
'scale' => 3,
'array' => [],
},
'z' => {
'count' => 18,
'scale' => 2,
'array' => [],
},
);
for %buckets.values -> $arg_for {
for 0 .. $arg_for<count> -> $index {
$arg_for<array>.push($index * $arg_for<scale>);
}
}
my int @results;
my int $target = 35;
my $w_bucket = %buckets<w>;
for 0 .. $w_bucket<count> -> $i {
say "To 4: $i";
my $w = $w_bucket<array>[$i];
last if $w > $target;
my $x_bucket = %buckets<x>;
for 0 .. $x_bucket<count> -> $j {
say " To 6: $j";
my $x = $x_bucket<array>[$j];
last if ($w, $x).sum > $target;
my $y_bucket = %buckets<y>;
for 0 .. $y_bucket<count> -> $k {
my $y = $y_bucket<array>[$k];
last if ($w, $x, $y).sum > $target;
my $z_bucket = %buckets<z>;
for 0 .. $z_bucket<count> -> $l {
my $z = $z_bucket<array>[$l];
if( $target == ($w, $x, $y, $z).sum ) {
@results.push( [$i, $j, $k, $l] );
}
}
}
}
}
my $counter = 0;
for @results -> $result {
say "$counter: " ~ $result.join(" | ");
$counter++;
}