from itertools import groupby
def sequences(data):
# [1, 3, 4, 6] -> [1], [3, 4], [6]
data = sorted(data)
for _, g in groupby(enumerate(data), lambda x: x[0] - x[1]):
yield [v for _,v in g]
def has_straight(cards):
# Straight is a sequence of 5 cards or 4 cards + Ace!
ranks = {card for card in cards}
required = 4 if 1 in ranks else 5
return len(ranks) >= 5 and any(len(x) >= required for x in sequences(ranks))
print(has_straight([1, 2, 3, 4, 5]))
print(has_straight([1, 6, 3, 4, 5]))
print(has_straight([3, 4, 5, 6, 7]))
print(has_straight([3, 4, 5, 6, 8]))
print(has_straight([1, 10, 3, 4, 5]))
print(has_straight([]))
print(has_straight([1, 2, 3, 4]))
print(has_straight([1, 1, 2, 3]))
print(has_straight([1, 1, 2, 3, 4])) # должно ли тут быть true?
ZnJvbSBpdGVydG9vbHMgaW1wb3J0IGdyb3VwYnkKCmRlZiBzZXF1ZW5jZXMoZGF0YSk6CgkjIFsxLCAzLCA0LCA2XSAtPiBbMV0sIFszLCA0XSwgWzZdCiAgICBkYXRhID0gc29ydGVkKGRhdGEpCiAgICBmb3IgXywgZyBpbiBncm91cGJ5KGVudW1lcmF0ZShkYXRhKSwgbGFtYmRhIHg6IHhbMF0gLSB4WzFdKToKICAgICAgICB5aWVsZCBbdiBmb3IgXyx2IGluIGddCiAgICAKZGVmIGhhc19zdHJhaWdodChjYXJkcyk6CiAgICAjIFN0cmFpZ2h0IGlzIGEgc2VxdWVuY2Ugb2YgNSBjYXJkcyBvciA0IGNhcmRzICsgQWNlIQogICAgcmFua3MgPSB7Y2FyZCBmb3IgY2FyZCBpbiBjYXJkc30KICAgIHJlcXVpcmVkID0gNCBpZiAxIGluIHJhbmtzIGVsc2UgNQogICAgcmV0dXJuIGxlbihyYW5rcykgPj0gNSBhbmQgYW55KGxlbih4KSA+PSByZXF1aXJlZCBmb3IgeCBpbiBzZXF1ZW5jZXMocmFua3MpKQoKcHJpbnQoaGFzX3N0cmFpZ2h0KFsxLCAyLCAzLCA0LCA1XSkpCnByaW50KGhhc19zdHJhaWdodChbMSwgNiwgMywgNCwgNV0pKQpwcmludChoYXNfc3RyYWlnaHQoWzMsIDQsIDUsIDYsIDddKSkKCnByaW50KGhhc19zdHJhaWdodChbMywgNCwgNSwgNiwgOF0pKQpwcmludChoYXNfc3RyYWlnaHQoWzEsIDEwLCAzLCA0LCA1XSkpCnByaW50KGhhc19zdHJhaWdodChbXSkpCnByaW50KGhhc19zdHJhaWdodChbMSwgMiwgMywgNF0pKQpwcmludChoYXNfc3RyYWlnaHQoWzEsIDEsIDIsIDNdKSkKcHJpbnQoaGFzX3N0cmFpZ2h0KFsxLCAxLCAyLCAzLCA0XSkpICMg0LTQvtC70LbQvdC+INC70Lgg0YLRg9GCINCx0YvRgtGMIHRydWU/