Set puzzle: Difference between revisions
Content added Content deleted
(→{{header|Perl 6}}: some clarifications) |
(→{{header|Perl 6}}: for is prettier than map, add works with) |
||
Line 427: | Line 427: | ||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |
||
{{works with|rakudo|2013-02-11}} |
|||
This uses the <tt>combine</tt> routine from [[Combinations#Perl_6]] task. The trick here is to allocate three different bits for each enum, with the result that the cards of a matching set OR together to produce a 4-digit octal number that contains only the digits 1, 2, 4, or 7. This OR is done by funny looking <tt>[+|]</tt>, which is the reduction form of <tt>+|</tt>, which is the numeric bitwise OR. (Because Perl 6 stole the bare <tt>|</tt> operator for composing junctions instead.) |
This uses the <tt>combine</tt> routine from [[Combinations#Perl_6]] task. The trick here is to allocate three different bits for each enum, with the result that the cards of a matching set OR together to produce a 4-digit octal number that contains only the digits 1, 2, 4, or 7. This OR is done by funny looking <tt>[+|]</tt>, which is the reduction form of <tt>+|</tt>, which is the numeric bitwise OR. (Because Perl 6 stole the bare <tt>|</tt> operator for composing junctions instead.) |
||
<lang perl6>enum Color (red => 512, green => 1024, purple => 2048); |
<lang perl6>enum Color (red => 512, green => 1024, purple => 2048); |
||
Line 453: | Line 454: | ||
} |
} |
||
sub show-cards(@c) { @c |
sub show-cards(@c) { for @c -> $c { printf " %-6s %-5s %-8s %s\n", $c».key } }</lang> |
||
{{out}} |
{{out}} |
||
<pre>Drew 9 cards: |
<pre>Drew 9 cards: |