Für dieses Projekt, an dem ich arbeite, schreibe ich einen Weg, um nacheinander jede mögliche Kombination von vier Buchstaben zu finden. Ich dachte darüber nach, eine Schleife zu schreiben, die i erhöht und i in die vierte Basis umwandelt und die 0, 1, 2 und 3 ersetzt. Ich stieß auf ein Problem, als 00 nicht auftauchen würde. Ich dachte daran, i in Base 5 zu konvertieren und jedes Mal zu ignorieren, wenn 0 auftauchen würde, und die 1er, 2er, 3er und 4er zu ersetzen. Es funktioniert für mich, aber das Problem ist, dass es nicht sehr effizient ist.Ein sequenzieller Zähler
Hier ist der beste Code, den ich jetzt haben:
import string
digs = string.digits + string.letters
def int2base(x, base):
if x < 0: sign = -1
elif x == 0: return digs[0]
else: sign = 1
x *= sign
digits = []
while x:
digits.append(digs[x % base])
x /= base
if sign < 0:
digits.append('-')
digits.reverse()
return ''.join(digits)
for i in range(0,1000):
x=i
x=int2base(x, 5)
if str(x).count("0")==0:
print(i)
Gibt es eine Möglichkeit, dass ich das Problem beheben kann, so dass er druckt, was es druckt, aber ich brauche nur ich in eine Funktion zu stecken? Beispiel Eingabe und Ausgabe
0 -> a
1 -> b
2 -> c
3 -> d
4 -> aa
5 -> ab
6 -> ac
7 -> ad
8 -> ba
9 -> bb
10 -> bc
11 -> bd
12 -> ca
13 -> cb
14 -> cc
15 -> cd
16 -> da
17 -> db
18 -> dc
19 -> dd
20 -> aaa
21 -> aab
Können Sie Beispieleingabe und -ausgabe bereitstellen, so dass ich sicher sein kann, ob Sie suchen Kombinationen, Permutationen oder ein Produkt? – TigerhawkT3
@ TigerhawkT3 Sicher, ich habe meinen Beitrag bearbeitet und einige Beispiele hinzugefügt – chamington