Hallo, danke der Nachfrage. Man kann es sich so vorstellen:
Man bilde eine Kette namens 'chain' und unterscheidet das uns bekannte Alphabet in häufige, mittel häufige und weniger häufige Buchstaben:
Code: Alles auswählen
chain = VAR1 + VAR2 + VAR3 + VAR4 + VAR5
mit
VAR1 aus alphabet_häufig
VAR2 aus alphabet_mittel
VAR3 aus alphabet_wenigerhäufig
VAR4 aus alphabet_häufig
VAR5 aus alphabet_mittel
Nun würde ich gerne alle kombinatorischen Varianten sehen, ohne dass z.B. VAR1 und VAR4 beide den alphabetischen Buchstaben 'E' repräsentieren. Beide Variablen greifen jedoch auf die Gruppe 'alphabet_häufig' zu (also z.B. die häufigen Buchstaben ETAOINSRH).
['abc', 'bca',..] hilft nicht weiter da es wohl eine Liste, eine Kombination von Buchstaben darstellt und nicht eine Kombination von Variablen. Das bedeutet ich hätte dann fälschlicherweise alle Kombinationen von VAR1, also z.B. alle Kombinationen häufiger Buchstaben permutiert (ETAOINSRH, ETAOINSHR, usw.). Ich suche jedoch alle kombinatorischen Varianten der 'chain', d.h. alle möglichen Werte von VAR1 mit allen möglichen Werten von VAR2 usw. miteinander kombiniert - jedoch ohne dass VAR1 = VAR2 möglich ist!
In der eingangs genannten Funktion
Code: Alles auswählen
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)
wäre die Kombination zunächst leicht möglich, da man bestimmen kann ob x aus 'alphabet' oder z.B. aus 'alphabet_häufig' oder 'alphabet_wenigerhäufig' usw. gewählt werden darf.
In diesem 'case' wären alle Werte wunderbar miteinander in der 'chain' kombiniert und stünden zur weiteren Auswertung zur Verfügung. Und zwar noch nicht einmal als strings, wie dies bei einer einfachen Permutation der Fall wäre (die ja auch nur innerhalb einer Gruppe funktioniert..hier haben wir aber drei Permutationen die zu dem string-Ergebnis vieler chains führen sollen..).
Allerdings will ich eben nun tunlichst vermeiden, dass VAR1 und VAR4 innerhalb eines chain-Teilergebnisses DENSELBEN Wert zugewiesen bekommen, selbst wenn beide Variablen auf die gleiche Gruppe von häufigen Buchstaben ('alphabet_häufig') zugreifen. Der alphabetische Buchstabe 'E' soll also z.B. in einer 'chain' bzw. einem chain-Teilergebnis höchstens einmal vorkommen können. Dies, je nach kombinatorischem Fortschritt, entweder auf Position VAR1 oder auf Position VAR2 oder sogar überhaupt nicht (wenn z.B. VAR1 = 'A' und VAR4 = 'T' in der chain aufscheint und somit das Teilergebnis chain(n) eben kein 'E' beinhaltet).
Bei Zahlen wäre dies aliquot
Auch hier wäre das Problem gegeben, dass VAR1 und VAR2 gegebenenfalls beide denselben Wert, z.B. 0, zugewiesen bekommen (weil nunmal beide aus dem selben Range Bereich beziehen. Dass aber beide nicht 0 sein sollen, wäre eine gewünschte Nebenbedingung, z.B. zwecks Vermeidung eines mathematischen 0x0 Werts bzw. anderer Potenzen (z.B. 3x3).
Eine Lösung unter der Nebenbedingung, dass Var1 nicht gleich Var4 sein darf, ist mir bisher leider noch nicht geglückt.
Quicktrader