Как получить все буквенно-цифровые комбинации с N цифрами на 5 позиций - PullRequest
0 голосов
/ 27 августа 2018

Как получить с помощью python все буквенно-цифровые комбинации с N цифрами в комбинациях для 5 позиций.
Символы могут повторяться.
Остальные (5-N) символы должны быть буквами.
Примеры того, что я имею в виду:

Number of digits = 1 should generate:  
aygd3
2afvd
jde6a

Number of digits = 2 should generate:  
ay5d3
2af8d
jde64

Number of digits = 3 should generate:  
a15d3
26f8d
jd464

Number of digits = 4 should generate:  
315d3
26f87
9d464  

1 Ответ

0 голосов
/ 29 августа 2018

рекурсивная генерация.Обратите внимание, что размер файла для комбинаций 5/2 составляет 117 МБ
17 576 000 значений (10^2 * 26^3 * C(5,2))

data = 'abcdefghijklmnopqrstuvwxyz0123456789'

def genld(s, maxlen, digs, digcnt):
    le = len(s)
    if (le == maxlen):
        #print(s)
        my_file.write(s + "\n")
    else:
        lo = 0 if (maxlen - le > digs - digcnt) else 26
        hi = 26 if (digcnt == digs) else 36
        for i in range(lo, hi):
            genld(s + data[i], maxlen, digs, digcnt + i // 26)

my_file = open("out.txt", "w")
genld('', 5, 2, 0)
my_file.close()
...