Listenkombinatorik
Verfasst: Freitag 12. April 2019, 10:39
Hallo zusammen,
ich habe ein "kleines" Anliegen.
Es existieren die Listen
die füge ich zu einer Liste zusammen:
Das hieße für c = [1,2,3,4,5,6,7,8]
Ich möchte nun die Einträge untereinander vertauschen:
Das liefert mir natürlich eine Liste der Länge 8!.
Im Anwendungsfall arbeite ich allerdings mit zwei Listen der Länge 10. Das liefert in den Permutationen 20! Möglichkeiten ...
Verrückt.
Jetzt habe ich aber den Luxus von Regeln. Es sind nicht alle Kombinatoriken erlaubt.
In den Permutationen dürfen die Zahlen von a oder b nicht vertauscht werden.
Folgende Ergebnisse für das Beispiel sind also legitim:
usw.
Die Längen der Inputs sind dabei immer irgendwo zwischen 8 und 12. Insgesamt also eine Länge von 16 - 24.
Gibt es eine variable Möglichkeit diesen Sachverhalt umzusetzen?
Habe selbst leider keine vernünftige Idee mehr.
ich habe ein "kleines" Anliegen.
Es existieren die Listen
Code: Alles auswählen
a = [1,2,3,4]
b = [5,6,7,8]
Code: Alles auswählen
c = a + b
Ich möchte nun die Einträge untereinander vertauschen:
Code: Alles auswählen
import itertools
combinations = list(iterools.permutations(c)
Im Anwendungsfall arbeite ich allerdings mit zwei Listen der Länge 10. Das liefert in den Permutationen 20! Möglichkeiten ...
Verrückt.
Jetzt habe ich aber den Luxus von Regeln. Es sind nicht alle Kombinatoriken erlaubt.
In den Permutationen dürfen die Zahlen von a oder b nicht vertauscht werden.
Folgende Ergebnisse für das Beispiel sind also legitim:
Code: Alles auswählen
combination1 = [1,2,3,4,5,6,7,8]
combination2 = [1,2,3,5,4,6,7,8]
combination3 = [1,2,5,3,6,4,7,8]
Die Längen der Inputs sind dabei immer irgendwo zwischen 8 und 12. Insgesamt also eine Länge von 16 - 24.
Gibt es eine variable Möglichkeit diesen Sachverhalt umzusetzen?
Habe selbst leider keine vernünftige Idee mehr.