def find(self, cards, higher=True): pairRec = TMultiFinder(2, True) tripleRec = TMultiFinder(3, True) pairs,a = pairRec.recognize(cards) triples,b = tripleRec.recognize(cards) lipairs = list(pairs.values()) ltriples = list(triples.values()) li = list(flatten(lipairs+ltriples)) try: fh = TFullHouse(li) return [fh] except: return []
def __find_fullhouse__(cards: Set[Card]): pairRec = TMultiFinder(2, True) tripleRec = TMultiFinder(3, True) pairs,a = pairRec.recognize(cards) triples,b = tripleRec.recognize(cards) num_pairs = len(pairs) num_triples = len(triples) if (num_triples > 0): diff = num_pairs - num_triples; if (diff) >= 0: return min(num_pairs, num_triples); else: matching = num_pairs # because num_triples < num_pairs, ergo num_pairs is the number of matching pairs # print('matching', matching) additional = (num_triples - num_pairs) // 2; # print('additional', additional) return matching + additional
def test_trix2(self): tri2 = tcards('k2 r2 b2') tri3 = tcards('r3 g3 b3') distraction = tcards('g5 b8 r9 k10 k11 k13') cards = distraction + tri2 + tri3 pr = TMultiFinder(3, True) out, le = pr.recognize(cards) pytest.assume(len(out) == 2) pytest.assume(tri2 == out[2]) pytest.assume(tri3 == out[3])
def test_3ph(self): cards = tcards('k2 g2 ph b3 g3') pr = TMultiFinder(3, False) out, le = pr.recognize(cards, True) assert {2: (tcards('k2 g2 ph')), 3: (tcards('b3 g3 ph'))} == out
def test_2x2(self): cards = tcards('k2 r2 b3 g3') pr = TMultiFinder(2, True) out, le = pr.recognize(cards) assert out == {2: (tcards('k2 r2')), 3: (tcards('b3 g3'))}
def test_3fail(self): cards = tcards('k2 r2 b3 g3') pr = TMultiFinder(3, True) out, le = pr.recognize(cards) assert out == {}
def test_4simpleph(self): cards = tcards('k2 r2 b2 b3') pr = TMultiFinder(4, True) out, le = pr.recognize(cards) assert out == {}
def test_4simple(self): cards = tcards('k2 r2 b2 g2') pr = TMultiFinder(4, True) out, le = pr.recognize(cards) assert {2: (cards)} == out