По определению последовательность представляет собой комбинацию по меньшей мере трех карт, которые находятся в числовой последовательности.
Я считаю, что это должно сработать. Я предполагаю набор из 5 отдельных карт (1-5) без костюма. Я также предполагаю, что цифры просто должны быть в порядке возрастания, о чем мне понадобится разъяснение (спасибо за запрос asongtoruin).
import itertools
def all_card_sequences_of_size(cards, n):
return itertools.combinations(cards, n)
if __name__ == '__main__':
cards = [i + 1 for i in range(5)]
print(list(all_card_sequences_of_size(cards, 3)))
print(list(all_card_sequences_of_size(cards, 4)))
Выход
[(1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 4), (1, 3, 5), (1, 4, 5), (2, 3, 4), (2, 3, 5), (2, 4, 5), (3, 4, 5)]
[(1, 2, 3, 4), (1, 2, 3, 5), (1, 2, 4, 5), (1, 3, 4, 5), (2, 3, 4, 5)]
Предполагая, что вам нужно последовательности, чтобы быть последовательными, то вот решение для этого:
import itertools
def is_sequence_consecutive(sequence):
return all(a == b - 1 for a, b in zip(sequence[:-1], sequence[1:]))
def all_card_sequences_of_size(cards, n):
for sequence in itertools.combinations(cards, n):
if is_sequence_consecutive(sequence):
yield sequence
if __name__ == '__main__':
cards = [i + 1 for i in range(5)]
print(list(all_card_sequences_of_size(cards, 3)))
print(list(all_card_sequences_of_size(cards, 4)))
Выход
[(1, 2, 3), (2, 3, 4), (3, 4, 5)]
[(1, 2, 3, 4), (2, 3, 4, 5)]
Для того, чтобы получить все возможные последовательности последовательных по п числа карт (п> = 3):
import itertools
def is_sequence_consecutive(sequence):
return all(a == b - 1 for a, b in zip(sequence[:-1], sequence[1:]))
def all_card_sequences_of_size(cards, n):
for sequence in itertools.combinations(cards, n):
if is_sequence_consecutive(sequence):
yield sequence
def all_card_sequences(cards):
for i in range(3, len(cards) + 1):
yield from all_card_sequences_of_size(cards, i)
if __name__ == '__main__':
cards = [i + 1 for i in range(5)]
print(list(all_card_sequences(cards)))
Выходной
[(1, 2, 3), (2, 3, 4), (3, 4, 5), (1, 2, 3, 4), (2, 3, 4, 5), (1, 2, 3, 4, 5)]
на "числовой последовательности" вы имеете в виду последовательные цифры или просто в порядке возрастания? – asongtoruin