24 lines
642 B
Text
24 lines
642 B
Text
require 'stats/base'
|
|
|
|
Number=: ;:'one two three'
|
|
Colour=: ;:'red green purple'
|
|
Fill=: ;:'solid open striped'
|
|
Symbol=: ;:'oval squiggle diamond'
|
|
Features=: Number ; Colour ; Fill ;< Symbol
|
|
Deck=: > ; <"1 { i.@#&.> Features
|
|
sayCards=: (', ' joinstring Features {&>~ ])"1
|
|
drawRandom=: ] {~ (? #)
|
|
isSet=: *./@:(1 3 e.~ [: #@~."1 |:)"2
|
|
getSets=: [: (] #~ isSet) ] {~ 3 comb #
|
|
countSets=: #@:getSets
|
|
|
|
set_puzzle=: verb define
|
|
target=. <. -: y
|
|
whilst. target ~: countSets Hand do.
|
|
Hand=. y drawRandom Deck
|
|
end.
|
|
echo 'Dealt ',(": y),' Cards:'
|
|
echo sayCards sort Hand
|
|
echo LF,'Found ',(":target),' Sets:'
|
|
echo sayCards sort"2 getSets Hand
|
|
)
|