def get_all_shun_zi(out_cards=[1, 2, 3, 4, 5], p_cards=[1, 3, 4, 5, 6, 7, 2, 6, 4, 5, 6, 7, 8, 9, 10]):
"""
双指针
去p_cards里面找到所有能大于out_cards的顺子
"""
# 去重
s = set(p_cards)
p_cards = list(s)
min_card = min(out_cards)
out_card_len = len(out_cards)
p1 = 0
p_cards.sort()
# 将p1移到顺子的最小位置
for i, v in enumerate(p_cards):
if v > min_card:
p1 = i
break
shun_zi = [p_cards[p1]]
ans = []
p_cards_len = len(p_cards)
print("===", p_cards_len, p1, out_card_len, p_cards_len - p1 <= out_card_len)
p2 = p1
while p_cards_len - p2 >= out_card_len:
# 符合要得起的顺子,直接加入答案
if len(shun_zi) == out_card_len:
ans.append(shun_zi)
p2 += 1
shun_zi = [p_cards[p2]]
p1 = p2
continue
if p_cards[p1] + 1 == p_cards[p1 + 1]:
shun_zi.append(p_cards[p1 + 1])
else:
shun_zi = [p_cards[p1 + 1]]
p2 = p1 + 1
p1 += 1
return ans