Возрастающие и последовательные числа

Кодинг-марафон. Задача 7.

Напишите функцию, которая будет возвращать True, если строка, являющаяся аргументом функции, содержит возрастающие И последовательные числа. Например, ‘123’ (1-2-3) или ‘101112’ (10-11-12).

Примечания

  • Функция должна возвращать (не печатать!) только True\False, она не должна бросать исключений.
  • Предполагается, что строка-аргумент никогда не пустая и всегда содержит минимум 2 числа, например ’10’ — валидная строка.
  • Строка-аргумент будет содержать только числа.

Сигнатура — def ascending(value: str) -> bool:

Примеры

ascending("232425") ➞ True, поскольку строку можно представить как 23, 24, 25 (числа следуют друг за другом по возрастанию)
ascending("2324256") ➞ False, так как шестерка в конце ломает возрастающий ряд
ascending("444445") ➞ True, поскольку строку можно представить как 444 и 445.

Решение

def ascending(value: str) -> bool:
    length = len(value)
    for i in range(length // 2):
        next_value = value[:i + 1]
        int_value = int(next_value)
        while len(next_value) < length:
            int_value += 1
            next_value = f'{next_value}{int_value}'
        if next_value == value:
            return True
    return False
python books logo

Английский для программистов

Наш телеграм канал с тестами по английскому языку для программистов. Английский это часть карьеры программиста. Поэтому полезно заняться им уже сейчас

×