Set, the card game: Difference between revisions

Add Factor
(Add Factor)
Line 32:
 
::* The wikipedia article, [[wp:Set (card game)|Set (card game)]]
 
=={{header|Factor}}==
<syntaxhighlight lang="factor">USING: grouping io kernel literals math.combinatorics
prettyprint qw random sequences sequences.product sets ;
 
CONSTANT: cards $[
qw{
one two three
solid open striped
red green purple
diamond oval squiggle
} 3 group <product-sequence>
]
 
: deal ( n -- seq ) cards swap sample ;
 
: set? ( seq -- ? ) cardinality { 1 3 } member? ;
 
: sets ( seq -- newseq )
3 [ flip [ set? ] all? ] filter-combinations ;
 
: .length ( seq str -- ) write bl length . nl ;
 
: .cards ( seq -- )
[ " " join dup "o" head? "" "s" ? append print ] each nl ;
 
: .sets ( seq -- )
dup "Sets present:" .length [ .cards ] each ;
 
: play ( n -- )
deal [ "Cards dealt:" .length ]
[ .cards ]
[ sets .sets ] tri ;
 
4 8 12 [ play ] tri@</syntaxhighlight>
{{out}}
<pre>
Cards dealt: 4
 
two solid purple ovals
three open green diamonds
two striped purple ovals
three solid purple diamonds
 
Sets present: 0
 
Cards dealt: 8
 
two open red squiggles
one open red oval
two striped purple diamonds
one striped green oval
one striped red squiggle
three solid purple ovals
one solid green diamond
three striped purple ovals
 
Sets present: 1
 
two open red squiggles
one solid green diamond
three striped purple ovals
 
Cards dealt: 12
 
two striped purple diamonds
two open purple ovals
three striped green squiggles
one striped red diamond
three open green diamonds
three open green squiggles
two open green ovals
two solid red diamonds
three open purple squiggles
one open purple squiggle
two solid green ovals
two striped green ovals
 
Sets present: 2
 
one striped red diamond
three open purple squiggles
two solid green ovals
 
two open green ovals
two solid green ovals
two striped green ovals
</pre>
 
=={{header|Julia}}==
1,827

edits