Code zur Kombination von Werten ohne Widerholung?
Guten Tag zusammen,
ich möchte in einem Programm eine Matrix aus einem Vektor erstellen, in welcher alle Kombinationen der Werte des Vektors ohne Widerholung aufgetragen sind.
Also z.B:
Vektor: (1,2,3)
Ergebnis: (1,2,3) , (1,3,2) , (2,1,3) , (2,3,1) , (3,1,2) , (3,2,1)
Der Code sollte mit jeglicher Anzahl an Zahlen funktionieren (die Laufzeit ist unwichtig). Die Werte im Array sind nie doppelt (falls das von Bedeutung sein sollte).
Wäre super, wenn ihr mir einen pseudocode schreiben oder gängige Algorithmen/Verfahren für eine weitere eigenrecherche nennen könntet.
Vielen Dank für eure Hilfe!
1 Antwort
Hallo.
Wie wäre es hiermit:
def combinations(l):
n = len(l)
def combinationList(i, c):
if i == n:
print(tuple(c))
else:
for j in range(n):
if l[j] not in c:
combinationList(i+1, c + [l[j]])
combinationList(0, [])
# Beispielaufruf
lst = [1, 2, 3]
combinations(lst)
Den Code kannst du auch für andere Programmiersprachen adaptieren. Wenn du in Python unterwegs bist, kannst du aber auch direkt die standardmäßig verfügbare Bibliothek itertools benutzen:
from itertools import permutations
def combinations(l):
for c in permutations(l):
print(c)
# Beispielaufruf
lst = [1, 2, 3]
combinations(lst)