Кодинг-марафон. Задача 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