my %cardvals; %cardvals{ @hand[0..4] }++ #### # [234] of a kind $score += [*]($_,$_-1) for %cardvals.values; #### # Fifteens if any( @hand ) ~~ 5 && any( @hand ) ~~ 10 { $score += 2 * ( grep -> $_ ~~ 5, @hand ) * ( grep -> $_ ~~ 10, @hand ); } #### # Runs SPAN: for 5 .. 3 -> $span { for 1 .. 11 -> $start { if all( @cardvals{ $start .. $start + $span } ) { $score += $span; last SPAN; } } } #### Hand = 2,3,3,4 5 2,3,4,5 = 4 points 2,3,4,5 = 4 points = 8 points total