Set puzzle: Difference between revisions
→{{header|J}}: Add J
(→{{header|Java}}: updated ouput) |
(→{{header|J}}: Add J) |
||
Line 199:
Card(purple, two, squiggle, solid)
Card(red, one, squiggle, open)</pre>
=={{header|J}}==
'''Solution:'''
<lang j>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=: 3 : 0
target=. <. -: y
whilst. target ~: countSets Hand do.
Hand=. y drawRandom Deck
end.
echo 'Dealt ',(": y),' Cards:'
echo sayCards Hand
echo 'Found ',(":target),' Sets:'
echo sayCards getSets Hand
)</lang>
'''Example:'''
<lang j> set_puzzle 9
Dealt 9 Cards:
three, purple, open, oval
three, green, open, diamond
three, red, solid, squiggle
three, green, solid, oval
three, purple, striped, oval
three, red, open, oval
one, red, solid, oval
one, green, open, squiggle
two, purple, striped, squiggle
Found 4 Sets:
three, green, open, diamond
three, red, solid, squiggle
three, purple, striped, oval
three, green, open, diamond
one, red, solid, oval
two, purple, striped, squiggle
three, red, solid, squiggle
one, green, open, squiggle
two, purple, striped, squiggle
three, green, solid, oval
three, purple, striped, oval
three, red, open, oval </lang>
=={{header|Java}}==
|