Advertisement
Guest User

Untitled

a guest
Aug 3rd, 2013
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.55 KB | None | 0 0
  1. # End of first game where we were stumped with 12 cards
  2. cards1 = map(lambda x:x.split(), [
  3.     'oval 2 red filled',
  4.     'diamond 3 purple hollow',
  5.     'oval 2 green filled',
  6.     'wave 3 red filled',
  7.     'wave 2 green semi',
  8.     'diamond 1 purple semi',
  9.     'oval 1 purple hollow',
  10.     'diamond 2 red filled',
  11.     'oval 3 green hollow',
  12.     'oval 3 purple hollow',
  13.     'diamond 1 green hollow',
  14.     'diamond 1 red hollow'
  15. ])
  16.  
  17. # End of second game where we were stumped with 12 cards
  18. cards2 = map(lambda x:x.split(), [
  19.     'oval 2 red semi',
  20.     'wave 3 red hollow',
  21.     'wave 1 green hollow',
  22.     'diamond 2 purple hollow',
  23.     'oval 2 green semi',
  24.     'oval 3 red filled',
  25.     'diamond 2 red filled',
  26.     'diamond 1 red semi',
  27.     'wave 2 green semi',
  28.     'diamond 1 green semi',
  29.     'diamond 2 purple filled',
  30.     'diamond 3 green semi'
  31. ])
  32.  
  33. def getCombinations(cards):
  34.     output = []
  35.     total = len(cards)
  36.    
  37.     i = 0
  38.     while i < total:
  39.         j = i + 1
  40.         while j < total:
  41.             k = j + 1
  42.             while k < total:
  43.                 if i != j and j != k and i != k:
  44.                     output.append((cards[i], cards[j], cards[k]))
  45.                 k = k + 1
  46.             j = j + 1
  47.         i += 1
  48.    
  49.     return output
  50.  
  51. def isSet(cardTriple):
  52.     card1, card2, card3 = cardTriple
  53.     i = 0
  54.     while i < 4:
  55.         a = card1[i]
  56.         b = card2[i]
  57.         c = card3[i]
  58.         if a == b and b == c:
  59.             pass # all 3 cards match for this quality
  60.         elif a != b and b != c and a != c:
  61.             pass # none of the cards match for this quality
  62.         else:
  63.             return False # some of the cards match but not all --> NOT A SET
  64.         i += 1
  65.     return True
  66.  
  67. for cards in (cards1, cards2):
  68.     print filter(isSet, getCombinations(cards))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement