-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsolve.py
More file actions
53 lines (39 loc) · 1.22 KB
/
solve.py
File metadata and controls
53 lines (39 loc) · 1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class game:
def __init__(self):
self.cards = []
def __repr__(self):
return str(self.cards)
def addCard(self, card):
self.cards.append(card)
def removeCard(self, card):
del self.cards[self.cards.index(card)]
def removeCardId(self, card_id):
del self.cards[card_id]
def getCardId(self, card):
return self.cards.index(card)
def findSets(self):
found = []
for i, ci in enumerate(self.cards):
for j, cj in enumerate(self.cards[i+1:], i+1):
for k, ck in enumerate(self.cards[j+1:], j+1):
if ci.is_set(cj,ck):
found.append((ci,cj,ck))
return found
def findSetsId(self):
found = []
for i, ci in enumerate(self.cards):
for j, cj in enumerate(self.cards[i+1:], i+1):
for k, ck in enumerate(self.cards[j+1:], j+1):
if ci.is_set(cj, ck):
found.append((self.getCardId(ci), self.getCardId(cj), self.getCardId(ck)))
return found
class card:
def __init__(self, *attrs):
self.attrs = attrs
def __eq__(self,other):
return self.attrs == other.attrs
def __repr__(self):
return 'Card{}'.format(self.attrs)
#Checking if 3 cards are a set
def is_set(self, card1, card2):
return all((val0+val1+val2) % 3 == 0 for val0, val1, val2 in zip(self.attrs, card1.attrs, card2.attrs))