Anonymous user
Set puzzle: Difference between revisions
→{{header|Python}}: Add Python Solution
(→{{header|D}}: Add Python header) |
(→{{header|Python}}: Add Python Solution) |
||
Line 199:
=={{header|Python}}==
<lang python>
from itertools import product, combinations
from random import sample
## Major constants
features = [ 'green purple red'.split(),
'one two three'.split(),
'oval diamond squiggle'.split(),
'open striped solid'.split() ]
dealt = 9
## Functions
def printcard(card):
print(' '.join('%8s' % f[i] for f,i in zip(features, card)))
def getdeal(dealt=dealt):
deck = list(product(list(range(3)), repeat=4))
deal = sample(deck, dealt)
return deal
def getsets(deal):
good_feature_count = set([1, 3])
sets = [ comb for comb in combinations(deal, 3)
if all( [(len(set(feature)) in good_feature_count)
for feature in zip(*comb)]
) ]
return sets
def printit(deal, sets):
print('Dealt %i cards:' % len(deal))
for card in deal: printcard(card)
print('\nFound %i sets:' % len(sets))
for s in sets:
for card in s: printcard(card)
print('')
if __name__ == '__main__':
deal = getdeal()
sets = getsets(deal)
printit(deal, sets)</lang>
{{out}}
<pre>Dealt 9 cards:
red two diamond striped
green two diamond striped
green three oval striped
purple one squiggle striped
red two squiggle solid
red one diamond solid
green one oval open
green two diamond solid
purple one oval open
Found 2 sets:
red two diamond striped
green three oval striped
purple one squiggle striped
purple one squiggle striped
red one diamond solid
green one oval open</pre>
|