Проверить список на непрерывное возрастание чисел и получить

Создавал предыдущий вопрос но не совсем уточнил точные действия. И так у нас есть список из чисел:

num = [1,2,3,4,5,100,214,411,41]
OUT: True, MAX: 5

Нам требуется проверить, если в этом списке есть 5 чисел которые нарастают непрерывно, то есть - 1, 2, 3, 4, 5, а так же вывести то число до какого идет непрерывное возрастание, в нашем случае 5 Так же списки могут быть разными, к примеру у нас будет такой список:

num = [22,1,2,3,4,5,6,7,8,41,44,200]
OUT: True, MAX: 8

Тут мы видим что нарастание идет уже из 8 цифр, нам требовалось проверить наростают ли 5 цифр, в этом случае мы должны получить что непрерывно наростают у нас 3,4,5,6,7 (то есть получаем максимальное число)


Ответы (2 шт):

Автор решения: Danis
def f(arr):
    for i in range(len(arr) - 5):
        el = arr[i:i + 5]
        if el == list(range(min(el), max(el) + 1)):
            return True, el[-1]
    return False
    
print(f([22,1,2,3,4,5,6,7,8,41,44,200]))

Вывод:

(True, 5)

def f(arr):
    arr2 = []
    for i in range(len(arr) - 5):
        el = arr[i:i + 5]
        if el == list(range(min(el), max(el) + 1)):
            arr2.append(el[-1])
            
    if arr2:
        return True, max(arr2)
    return False
    
print(f([22,1,2,3,4,5,6,7,8,41,44,200]))

Вывод:

(True, 8)

Вариант где длина передаётся как параметр

def f(arr, n):
    for i in range(len(arr) - n):
        el = arr[i:i + n]
        if el == list(range(min(el), max(el) + 1)):
            return True, el[-1]
    return False
→ Ссылка
Автор решения: Zhihar

как вариант:

old = arr[0]
len_max = 0
len_cur = 0
for value in arr + [arr[-1] + 2]:
    if value != old + 1:
        len_max = len_cur if len_cur > len_max else len_max
        len_cur = 0
    old = value
    len_cur += 1

print(len_max >= 5, len_max)
→ Ссылка