import random
import string
def iskaart(k: tuple) -> bool:
x = str(k[0])
y = str(k[-1])
if len(k) != 2:
return False
if len(y) != 1 or y not in "HSKR":
return False
if x == "10" or (x in "123456789" and len(x) == 1) or (x in "JQKA" and len(x) == 1):
return True
return False
def iskaarten(l: list) -> bool:
for k in l:
if not iskaart(k):
return False
return True
def ishand(l: list) -> bool:
if len(l) != 2:
return False
return iskaarten(l)
def istafel(l: list) -> bool:
if len(l) != 5:
return False
return iskaarten(l)
## Function is removed from exercise
# def alle_kaarten(l1: list, l2: list) -> list:
# l3 = l1 + l2
# return l3
def getalwaarde2int(g, a_waarde = 1) -> int:
if isinstance(g, int):
return g
elif g == "J":
return 11
elif g == "Q":
return 12
elif g == "K":
return 13
elif g == "A":
return a_waarde
def int2getalwaarde(i):
if 1 < i <= 10:
return i
if i == 11:
return "J"
if i == 12:
return "Q"
if i == 13:
return "K"
return "A"
def soort2int(s: str) -> int:
if s == "K":
return 0
if s == "R":
return 1
if s == "H":
return 2
return 3
def int2soort(i):
if i == 0:
return "K"
if i == 1:
return "R"
if i == 2:
return "H"
return "S"
def get_high_card(l: list) -> tuple:
mx_getalwaarde_int = -1 # Laagste mogelijke kaart
mx_soort_int = -1 # Laagste mogelijke kaart
for kaart_tup in l:
getalwaarde_int = getalwaarde2int(kaart_tup[0], 14)
soort_int = soort2int(kaart_tup[-1])
if getalwaarde_int > mx_getalwaarde_int or (getalwaarde_int == mx_getalwaarde_int and soort_int > mx_soort_int):
mx_getalwaarde_int = getalwaarde_int
mx_soort_int = soort_int
return int2getalwaarde(mx_getalwaarde_int), int2soort(mx_soort_int)
def ispaar(l: list, n) -> bool:
assert len(l) == n, "Ongeldige invoer"
c = l[0][0]
for k in l:
if k[0] != c:
return False
return True
def isflush(l: list) -> bool:
assert len(l) == 5, "Ongeldige invoer"
c = l[0][-1]
for k in l:
if k[-1] != c:
return False
return True
def isxpaar(l1: list, l2: list, n1: int, n2: int) -> bool:
return ispaar(l1, n1) and ispaar(l2, n2)
def isstraat(l: list) -> bool:
assert len(l) == 5, "Ongeldige invoer"
l_getalwaarde_int = []
for k in l:
if k[0] == "A":
l_getalwaarde_int.append(getalwaarde2int(k[0], 1))
l_getalwaarde_int.append(getalwaarde2int(k[0], 14))
else:
l_getalwaarde_int.append(getalwaarde2int(k[0]))
l_getalwaarde_int.sort()
# print(l_getalwaarde_int)
# i = l_getalwaarde_int[0]
possible_street = [1, 2, 3, 4, 5]
for i in range(0, 10):
if set(possible_street).issubset(set(l_getalwaarde_int)):
return True
possible_street = [i + 1 for i in possible_street]
return False
def isstraightflush(l: list) -> bool:
return isflush(l) and isstraat(l)