Есть такой забавный рекурсивный алгоритм перечисления всех строк (использущий yield из питона):
letters = "abcdefghijklmnopqrstuvwxyz"
def all_strings():
yield ''
for s in all_strings():
for c in letters:
yield s + c
Чтобы перечислить все строки - перечисляем все строки и добавляем варианты суффиксов a,b,c,...,z.
(
Read more... )
Comments 4
Reply
Иначе получится бесконечная рекурсия.
Вариант без рекурсии:
letters = "abcdefghijklmnopqrstuvwxyz"
def string_by_index(i):
s = ''
n = len(letters)
while i:
i, j = divmod(i-1, n)
s += letters[j]
return s[::-1]
Reply
> Иначе получится бесконечная рекурсия.
Я чувствую, сишные привычки записи деления ещё не раз меня подведут при переходе с Python2 на Python3. Поправил, спасибо.
> Вариант без рекурсии:
Компактненько!
Reply
Reply
Leave a comment