Вывести на экран самую длинную возрастающую последовательность, ее длину и позицию
Задача:Программа считывает последовательность цифр из файла(построчно) и выводит на экран самую длинную возрастающую последовательность, ее длину и позицию
ПРОБЛЕМА: Код почему-то просто выводит последний элемент
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 шт):
Считаем, что сами "последовательности" вы уже выделили и положили в переменную lst (хотя вопрос к вам: вы понимаете, что такое "последовательность" и что такое "строка" в терминах Python? Боюсь, что нет, но тем не менее).
ns=0
ls=0
for number, i in enumerate(lst):
if len(i)>=ls:
ls=len(i)
ns=number
print(f'Список всех последовательностей - {lst}\n')
print(f'Самая длинная восх. посл. - {lst[ns]}\n'
f'Длинна последовательности - {ls}\n'
f'Номер последовательности - {ns}')
Результат:
Список всех последовательностей - ['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']
Самая длинная восх. посл. - 22222222222
Длинна последовательности - 11
Номер последовательности - 16
Теперь вопрос к вам, в связи с достаточно вольным с вашей стороны обращением с устоявшейся терминологией а анализа того, что вы предоставили в качестве кода выших попыток решения задачи. А что такое в вашем понимании "Восходящая (возрастающая) последовательность"? Если под термином "Все последовательности" вы вывели вот это ['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']