Python :: Aufgabe #94

3 Lösungen Lösungen öffentlich

Möglichkeiten der Objektanordnung

Anfänger - Python von Veigar - 17.12.2015 um 11:25 Uhr
Liebe Community!

Schreibe ein kleines Script das für eine beliebige Menge Objekte alle Möglichkeiten diese anzuordnen ausgibt! (Nicht einfach nur die Anzahl der Möglichkeiten, eine funktion für fakultät zu schreiben ist bedeutend einfacher!)

Beispiel:
Eingabe: "rot,"blau","schwarz"

Ausgabe:
"rot,"blau","schwarz"
"rot","schwarz","blau"
"schwarz","rot",blau"
"schwarz","blau","rot"
"blau","schwarz","rot"
"blau","rot","schwarz"

Verzichtet bitte darauf ganz simpel einfach alle möglichen Ketten mit der gegebenen länge und den gegebenen Zuständen darauf zu untersuchen ob alle Objekte untereinander ungleich sind (Also nicht erst auch Zustände wie "schwarz",schwarz","schwarz" in eine innere Auswahl bringen und dann filtern) um (für große Aufgaben) die Rechenzeit gering zu halten!

Grüße!

Lösungen:

vote_ok
von Riddler (100 Punkte) - 24.01.2016 um 11:48 Uhr
Quellcode ausblenden Python-Code
def orderObjects(startList, endList):

    if(len(startList) == 0):
        print endList                           #print results

    else:
        for i in range(0, len(startList)):

            temp = startList[i]
            del startList[i]                    #delete Element i

            endList.append(temp)                #append Element to endList
            orderObjects(startList, endList)

            startList.insert(i, temp)           #insert deleted Element i
            del endList[len(endList ) - 1]      #delete last Element

startList = ["rot", "blau", "schwarz"]

orderObjects(startList, [])


vote_ok
von jigga (4260 Punkte) - 25.01.2016 um 09:54 Uhr
Quellcode ausblenden Python-Code
import itertools

permutationen = list(itertools.permutations(['rot', 'orange', 'gelb', 'gruen', 'blau', 'lila']))

for i in range(len(permutationen)):
    print('{0:{1}}. Möglichkeit: '.format(i+1, len(str(len(permutationen)))), permutationen[i])
vote_ok
von hak (980 Punkte) - 08.09.2016 um 04:38 Uhr
Quellcode ausblenden Python-Code
def permutate(elements, permutations=[[]]) :
    if len(elements) == 0:
        return permutations
    new_permutations = []
    for e in elements :
        new_permutations_for_ele = []
        for p in permutations:
            new_p = list(p)
            new_p.append(e)
            new_permutations_for_ele.append(new_p)
            new_ele = list(elements)
            new_ele.remove(e)
            new_permutations += permutate(new_ele, new_permutations_for_ele)
    return new_permutations