Per Definition ist eine Sequenz eine Kombination aus mindestens drei Karten in einer numerischen Reihenfolge.
Ich glaube, das sollte funktionieren. Ich nehme eine Reihe von 5 verschiedenen Karten (1-5) ohne Farbe an. Ich gehe auch davon aus, dass die Nummern nur in aufsteigender Reihenfolge sein müssen, worüber ich eine Klärung benötige (Danke, dass du asongtoruin fragst).
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)))
Ausgabe
[(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)]
Unter der Annahme, dass Sie die Sequenzen müssen nicht aufeinanderfolgend sein, hier ist eine Lösung dafür:
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)))
Ausgabe
[(1, 2, 3), (2, 3, 4), (3, 4, 5)]
[(1, 2, 3, 4), (2, 3, 4, 5)]
Um alle möglichen aufeinanderfolgenden Sequenzen für n Anzahl von Karten (n> = 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)))
Output
[(1, 2, 3), (2, 3, 4), (3, 4, 5), (1, 2, 3, 4), (2, 3, 4, 5), (1, 2, 3, 4, 5)]
von "Zahlenfolge" meinst du fortlaufende Nummern oder nur in aufsteigender Reihenfolge? – asongtoruin