Python :: Aufgabe #308 :: Lösung #2
2 Lösungen
#308
Bonusaufgabe 5 (schwer) - Permutationen.
Profi - Python
von Yali23
- 09.11.2020 um 17:21 Uhr
Implementieren Sie eine rekursive Funktion permute, die alle Permutationen der Elemente eines sequentiellen Datentyps (Slice-Operator wird unterstützt) bestimmt und als Elemente einer Liste ausgibt.
Beispieloutput:
Python-Code
Beispieloutput:
permute("abc")
['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
# Führen Sie diese Zelle aus, um Ihre Funktion zu testen.
# Wenn das Ausführen dieser Zelle zu Fehlern führt, dann ist Ihre Implementierung vermutlich nicht korrekt.
assert sorted(permute("abc")) == sorted(['abc', 'acb', 'bac', 'bca', 'cab', 'cba'])
assert sorted(permute("ab")) == sorted(['ab', 'ba'])
assert sorted(permute([1, 2])) == sorted([[1, 2], [2, 1]])
assert sorted(permute((1, 2, 3))) == sorted([(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)])#2
von AlexGroeg (2010 Punkte)
- 29.12.2020 um 16:22 Uhr
# 308 Bonusaufgabe 5 (schwer) - Permutationen.
import itertools
def permute(element):
liste= []
for i in itertools.permutations(element):
if type(element) == str:
liste.append(''.join(i))
elif type(element) == list:
l = []
for e in i:
l.append(e)
liste.append(l)
else:
liste.append(i)
return liste
# Führen Sie diese Zelle aus, um Ihre Funktion zu testen.
# Wenn das Ausführen dieser Zelle zu Fehlern führt, dann ist Ihre Implementierung vermutlich nicht korrekt.
assert sorted(permute("abc")) == sorted(['abc', 'acb', 'bac', 'bca', 'cab', 'cba'])
assert sorted(permute("ab")) == sorted(['ab', 'ba'])
assert sorted(permute([1, 2])) == sorted([[1, 2], [2, 1]])
assert sorted(permute((1, 2, 3))) == sorted([(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)])
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
