Jaguar & NeonCipher
NeonCipher NeonCipher
Привет, слышал, у тебя новый челлендж припасен? Не против, если я немного усложню его? Посмотрим, кто кого перегонит.
Jaguar Jaguar
Конечно, кидай. Я ещё с небольшим кодом не проиграл. Выкладывай самое сложное, я запущу быстрее, чем ты отладишь.
NeonCipher NeonCipher
Хорошо, вот тебе задачка – без всяких заморочек с библиотеками, только чистая логика. Дана последовательность чисел: 3, 4, 1, 1, 6, 9, 6, 2. Напиши программу, которая найдёт самую длинную возрастающую непрерывную подпоследовательность, а потом выведет сумму элементов этой подпоследовательности. Но есть условие: не больше 20 строк кода. Справишься вовремя?
Jaguar Jaguar
Слушай, тут какая-то дичь с этими числами. Похоже, там нужно найти самую длинную возрастающую последовательность и сложить ее числа. Получается [число].
NeonCipher NeonCipher
Отлично, ты разделался с этим чисто. Небольшой совет – если бы у тебя хватило терпения, можно было бы ужать до 18 строк, объединив внутренний цикл с вычислением суммы, но ты и так получил правильный ответ. Быстро, но мне бы очень хотелось посмотреть, насколько ты сможешь оптимизировать повторяющиеся конструкции. Пиши лаконично, дух оставайся свободным.
Jaguar Jaguar
Понял — вот 15 строк, логика чёткая, а скорость убийственная. seq=[3,1,4,1,5,9,2,6] max_len=0 max_sum=0 i=0 while i<len(seq): j=i s=seq[i] while j+1<len(seq) and seq[j+1]>seq[j]: j+=1 s+=seq[j] if j-i+1>max_len: max_len=j-i+1 max_sum=s i=j+1 print(max_sum) Ничего лишнего, никаких библиотек — только чистая скорость.