sub gen_idx_powerset (Int $size is copy) returns Array { my @c = ([]); for 0 .. $size-1 -> $i { push @c, (map { [@$_, $i] }, @c); } return @c; } # Fifteens $score += 2 * grep { 15 == [+]( @hand[@$_]>>. ) }, gen_idx_powerset( +@hand ); #### sub gen_idx_powerset( Int $i is copy ) { return [] unless $i > 0; return ( gen_idx_powerset( $i - 1 ), (map { [@$_, $i] }, gen_idx_powerset( $i - 1 ) ), ); }