Jump to content

Set, the card game: Difference between revisions

imported>Rowsety Moid
(Added Common Lisp)
Line 1,010:
 
In the whole deck, there are 1080 sets.</pre>
=={{header|Ruby}}==
 
<syntaxhighlight lang="ruby" line>
ATTRIBUTES = [:number, :shading, :colour, :symbol]
Card = Struct.new(*ATTRIBUTES){ def to_s = values.join(" ") }
combis = %i[one two three].product(%i[solid striped open], %i[red green purple], %i[diamond oval squiggle])
PACK = combis.map{|combi| Card.new(*combi) }
 
def set?(trio) = ATTRIBUTES.none?{|attr| trio.map(&attr).uniq.size == 2 }
 
[4, 8, 12].each do |hand_size|
puts "#{"_"*40}\n\nCards dealt: #{hand_size}"
puts hand = PACK.sample(hand_size)
sets = hand.combination(3).select{|h| set? h }
puts "\n#{sets.size} sets found"
sets.each{|set| puts set, ""}
end</syntaxhighlight>
{{out|Sample output}}
<pre>________________________________________
 
Cards dealt: 4
one striped green squiggle
one open red squiggle
two striped green oval
three solid green diamond
 
0 sets found
________________________________________
 
Cards dealt: 8
three open green squiggle
three striped green diamond
three striped red oval
three open red oval
three solid red diamond
one solid purple diamond
two open red diamond
one striped red diamond
 
2 sets found
three striped green diamond
one solid purple diamond
two open red diamond
 
three solid red diamond
two open red diamond
one striped red diamond
 
________________________________________
 
Cards dealt: 12
one solid purple oval
one striped purple oval
one open red diamond
three striped purple squiggle
three striped purple oval
three solid green squiggle
three solid purple diamond
two solid green squiggle
two open green squiggle
three open green diamond
two open purple squiggle
one striped red squiggle
 
3 sets found
one striped purple oval
three solid purple diamond
two open purple squiggle
 
one open red diamond
three striped purple oval
two solid green squiggle
 
three solid green squiggle
two open purple squiggle
one striped red squiggle
</pre>
 
=={{header|Quackery}}==
1,149

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.