Построчно считать последовательность цифр из файла и вывести на экран самую длинную возрост. послледовательность

Задача

Программа считывает последовательность цифр из файла(построчно) и выводит на экран самую длинную возрастающую последовательность, ее длину и позицию

Проблема

Код почему-то просто выводит последний элемент

import fileinput, time,os,psutil,re

start_time = time.time()
lst = []
s,l,n = ' '*3
# СЧитаем файл
with fileinput.FileInput('111.txt') as file:
    for line in file:
            for i in re.findall(r'\d+', line):
                lst.append(i)
    # Находим самую длинную последовательность
    for number, i in enumerate(lst):
        buff = 0
        for j in i:
            if int(j) > buff:
                buff = int(j)
                s = i
                l = len(i)
                n = number + 1
            else:
                break

print(f'Введенные значения- {lst}\n'
      f'Самая длинная восх. посл. - {s}\n'
      f'Длинна последовательности - {l}\n'
      f'Номер последовательности - {n}')


Значения в файле:

1 2  3 44 45 4 5 6 6 7
1 2 3 4 5e 9 1 й ц у к 22222222222
й ц у к 4 5 6 913 4 5 7 67898 456 4 12 6 7 4 2 123456789 4 5

У меня выводит

Введенные значения- ['1', '2', '3', '44', '45', '4', '5', '6', '6', '7', '1', '2', '3', '4', '5', '9', '1', '22222222222', '4', '5', '6', '913', '4', '5', '7', '67898', '456', '4', '12', '6', '7', '4', '2', '123456789', '4', '5']
Самая длинная восх. посл. - 5
Длинна последовательности - 1
Номер последовательности - 36

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

Автор решения: Сергей

Починил - " почему-то " объясняется тем, что у вас вообще нигде не запоминается эта длинная последовательность, да и сравнения не видно. Запоминается же что-то странное. Вы проверяете исключительно возрастание внутри последовательности.

Поэтому запоминаем ниже все последовательности возрастающие, а в конце самую длинную берем. Смотрите комментарии.

import fileinput, time,os,re

start_time = time.time()
lst = []
# СЧитаем файл
with fileinput.FileInput('111.txt') as file:
    for line in file:
            for i in re.findall(r'\d+', line):
                lst.append(i)
    # Список возрастающих последовательностей
    list1 = []
    # Находим самую длинную последовательность
    for number, i in enumerate(lst):
        temp_s=''
        fl = True
        buff = 0
        # Проверяем только если больше одного символа
        if len(i) > 1:
            for j in i:
                if int(j) > buff:
                    # Накапливаем последовательность
                    temp_s += j
                    buff = int(j)
                else:
                    # Не возрастающая последовательность
                    fl= False
                    break
            # Запомнили последовательность и её номер
            if fl:
                list1.append((temp_s, number + 1))
# Находим самую длинную последовательность
longest=max(list1, key=lambda i: len(i[0]))

print(f'Введенные значения- {lst}\n'
      f'Самая длинная восх. посл. - {longest[0]}\n'
      f'Длина последовательности - {len(longest[0])}\n'
      f'Номер последовательности - {longest[1]}')
→ Ссылка