Monoalphabetische Kombination
Verfasst: Montag 13. März 2017, 08:21
Hi..
es gibt ja die wunderbare Zeilen
was an und für sich ja gut funktioniert und hervorbringt, korrekterweise aber leider auch
Nun würde ich gerne davon ausgehen, dass jeder Buchstabe höchstens einmal in einem Ergebnis ('chain') verwendet werden kann, d.h. wurde für x bereits 'a' gewählt, so soll für y nur noch 'b' bzw. 'c' in Frage kommen. Dies jedoch nicht grundsätzlich, denn in der nächsten Ergebniszeile soll durchaus wieder für y der Buchstabe 'a' möglich sein, dann jedoch für x bzw. z eben nur noch 'b' bzw. 'c'.
Mathematisch liegt der Unterschied wohl bei 3^3 = 9 Kombinationen versus 3! = 3x2x1 = 6 Kombinationen, der Rechenaufwand ist also erheblich geringer.
Leider kann ich jedoch in die 're'-Funktion nicht eingreifen (Super-Newbie) und auch ein vorgelagertes oder hatte bedauerlicherweise keine Auswirkung auf die 're'-Funktion. Diese ist ja auch zurecht darauf ausgelegt, für jede Variable jeden Wert aus 'der Liste ('alphabet') zu verwenden.
Kennt jemand eine alternative Möglichkeit, die strings in allen Variationen - allerdings anhand von Variablen (x,y,z) - ohne doppelte Werte miteinander zu kombinieren?
Bzw. einen Zusatz, welcher dies im Zuge der 're'-Funktion ermöglicht?
bleibt nämlich (ohne 'h') ebenfalls ohne Wirkung bzw. führt zu einem Boole-Fehler #sigh#.
Die Variablen erscheinen mir erforderlich, da in weiterer Folge ja die Verkettung ('chain') folgen soll. Vielen Dank für Eure Unterstützung,
Quicktrader
es gibt ja die wunderbare Zeilen
Code: Alles auswählen
alphabet = ['a', 'b', 'c']
import re
for x, y, z in [(x,y,z) for x in alphabet for y in alphabet for z in alphabet]:
chain = x+y+z
print (chain)
Code: Alles auswählen
abc acb bac bca...Code: Alles auswählen
aaa abb bbc...Mathematisch liegt der Unterschied wohl bei 3^3 = 9 Kombinationen versus 3! = 3x2x1 = 6 Kombinationen, der Rechenaufwand ist also erheblich geringer.
Leider kann ich jedoch in die 're'-Funktion nicht eingreifen (Super-Newbie) und auch ein vorgelagertes
Code: Alles auswählen
a != bCode: Alles auswählen
a is not bKennt jemand eine alternative Möglichkeit, die strings in allen Variationen - allerdings anhand von Variablen (x,y,z) - ohne doppelte Werte miteinander zu kombinieren?
Bzw. einen Zusatz, welcher dies im Zuge der 're'-Funktion ermöglicht?
Code: Alles auswählen
for x, y, z in [(x,y,z) for x in alphabet for y in alphabet for z in alphabet] and a != b:Die Variablen erscheinen mir erforderlich, da in weiterer Folge ja die Verkettung ('chain') folgen soll. Vielen Dank für Eure Unterstützung,
Quicktrader