Set, the card game: Difference between revisions

→‎{{header|Raku}}: Add a Raku example
m (→‎{{header|Phix}}: removed a <br>)
(→‎{{header|Raku}}: Add a Raku example)
Line 471:
 
----
</pre>
 
=={{header|Raku}}==
 
<syntaxhighlight lang="raku" line>my @attributes = <one two three>, <solid striped open>, <red green purple>, <diamond oval squiggle>;
 
sub face ($_) { .polymod(3 xx 3).kv.map: { @attributes[$^k;$^v] } }
 
sub sets (@cards) {
@cards.combinations(3).map: { (sum ([Z+] $_».polymod(3 xx 3)) »%» 3) ?? (next) !! $_ }
}
 
for 3, 8, 12, 20 -> $deal {
my @cards = (^81).pick($deal);
my @sets = @cards.&sets;
say "\nIn a group of $deal randomly dealt cards, there are {+@sets} sets:";
for @sets { put .map(&face).join("\n"), "\n" };
}
 
say "\nIn the whole deck, there are {+(^81).&sets} sets.";</syntaxhighlight>
{{out|Sample output}}
<pre>In a group of 3 randomly dealt cards, there are 0 sets:
 
In a group of 8 randomly dealt cards, there are 2 sets:
three solid green squiggle
one striped red diamond
two open purple oval
 
one open red diamond
one solid red diamond
one striped red diamond
 
 
In a group of 12 randomly dealt cards, there are 2 sets:
one striped green oval
two open purple oval
three solid red oval
 
one open red oval
two open purple oval
three open green oval
 
 
In a group of 20 randomly dealt cards, there are 13 sets:
two striped purple squiggle
three striped purple diamond
one striped purple oval
 
two striped purple squiggle
three open green squiggle
one solid red squiggle
 
three solid red squiggle
two solid red squiggle
one solid red squiggle
 
three solid red squiggle
two open green diamond
one striped purple oval
 
three solid red squiggle
three striped purple squiggle
three open green squiggle
 
three solid red squiggle
three open green oval
three striped purple diamond
 
two solid red squiggle
one striped green squiggle
three open purple squiggle
 
two solid red squiggle
three solid green diamond
one solid purple oval
 
two solid red squiggle
two striped green diamond
two open purple oval
 
one striped green squiggle
two open purple oval
three solid red diamond
 
three striped purple squiggle
three open green oval
three solid red diamond
 
two striped green diamond
three open purple oval
one solid red squiggle
 
one solid green diamond
one solid purple oval
one solid red squiggle
 
 
In the whole deck, there are 1080 sets.
</pre>
 
10,327

edits