/
xddxdd
/
Python
Обзор
Документация
Войти
/
xddxdd
/
Python
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
data_structures/stacks/lexicographical_numbers.py
38 строк
966 B
1227haran
Added new algorithm to generate numbers in lexicographical order (#11674)
05 окт 2024, 20:19
Не верифицирован
05 окт 2024, 20:19
5a8655d
Код
Авторство
О чём код?
from collections.abc import Iterator def lexical_order(max_number: int) -> Iterator[int]: """ Generate numbers in lexical order from 1 to max_number. >>> " ".join(map(str, lexical_order(13))) '1 10 11 12 13 2 3 4 5 6 7 8 9' >>> list(lexical_order(1)) [1] >>> " ".join(map(str, lexical_order(20))) '1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 9' >>> " ".join(map(str, lexical_order(25))) '1 10 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 3 4 5 6 7 8 9' >>> list(lexical_order(12)) [1, 10, 11, 12, 2, 3, 4, 5, 6, 7, 8, 9] """ stack = [1] while stack: num = stack.pop() if num > max_number: continue yield num if (num % 10) != 9: stack.append(num + 1) stack.append(num * 10) if __name__ == "__main__": from doctest import testmod testmod() print(f"Numbers from 1 to 25 in lexical order: {list(lexical_order(26))}")