Just curious does this actually run? I'm trying on pugs 6.2.11 and it complains quite a bit. First of all shouldn't
for %buckets.values -> $arg_for be for %buckets.values -> $arg_for is rw since $arg_for is modified? And then I get an error telling me 'No such method in class Scalar: "&kv"' in the line for %buckets<w><array>.kv -> $i, $w { Is it just me? Regards Martin A. Pagaltzis (10:52 2006-05-24): > my %buckets = ( > w => { > count => 4, > scale => 10.5, > }, > x => { > count => 6, > scale => 7, > }, > y => { > count => 12, > scale => 3, > }, > z => { > count => 18, > scale => 2, > }, > ); > > for %buckets.values -> $arg_for { > $arg_for<array> = [ ( 0 .. $arg_for<count> ) »*« $arg_for<scale> ]; > } > > my int @results; > my int $target = 35; > > for %buckets<w><array>.kv -> $i, $w { > say "To 4: $i"; > last if $w > $target; > for %buckets<x><array>.kv -> $j, $x { > say " To 6: $j"; > last if ($w, $x).sum > $target; > for %buckets<y><array>.kv -> $k, $y { > last if ($w, $x, $y).sum > $target; > for %buckets<z><array>.kv -> $l, $z { > if( $target == ($w, $x, $y, $z).sum ) { > @results.push( [$i, $j, $k, $l] ); > } > } > } > } > } > > for @results.kv -> $idx, $result { > say "$idx: $result.join(' | ')"; > } > > I assume all those temporaries that I cleaned out were there for > speed, in which case this will run slower, but they were too > unsightly to keep around. > > Regards, > -- > #Aristotle > *AUTOLOAD=*_;sub _{s/(.*)::(.*)/print$2,(",$\/"," ")[defined wantarray]/e;$1}; > &Just->another->Perl->hacker;