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>
Anonymous user