0 / 0 / 0
Регистрация: 09.11.2022
Сообщений: 36

Выделить из заданного перечня чисел последовательность самой большой длины

27.03.2024, 19:05. Показов 604. Ответов 4

Студворк — интернет-сервис помощи студентам
Помогите решить задание пожалуйста. Сколько пытаюсь - мыслей как это действительно реализовать практически мало.

Задание :
Выделить из заданного перечня чисел последовательность самой большой длины, состоящую из элементов, расположенных подряд, сумма которых не превышает заданное значение.

Важно:
использовать только вызовы функций, определение анонимных функций на основе вызовов других функций, рекурсию.
То есть запрещено использовать циклы, условные операторы, операторы присваивания, операторы контроля кроме return.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.03.2024, 19:05
Ответы с готовыми решениями:

Выделить в отдельную строку все слова, где встречается хотя бы один специальный символ из заданного перечня
Люди Хелп. оч срочно надо написать программу. А как я не могу понять вообще как это реализовать. Составить и отладить программу, которая...

В списке нужно найти сумму цифр числа самой большой длины
программа просто не запускается.. X= for i in range(len(X)): while X!=0: X//10 k+=1 if k>m: ...

Составить программу вывода самой большой цифры в записи заданного числа
Составить программы в Pascale 1 задача. Найти сумму всех чисел в строке. 2 задача. Составить программу вывода самой большой цифры в...

4
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,710
Записей в блоге: 14
28.03.2024, 09:28
Python
1
2
3
4
5
6
7
8
9
10
11
from functools import reduce
 
def task(lst,s):
    size=len(lst)
    tmp=list(map(lambda start: list(map(lambda length: lst[start:start+length],range(1,size-start+1))), range(0,size)))
    tmp1=reduce(lambda acc,x: acc+x,tmp,[])
    tmp2=list(map(lambda x: (x,sum(x),len(x)),tmp1))
    tmp3=max(filter(lambda x: x[1] < s,tmp2),key=lambda x: x[2])
    return tmp3
 
print(task([1,2,0,0,4,6],4))
Можно записать это и без операторов присвоения... Будет более громоздко:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def task_0(lst):
    return list(map(lambda start: list(map(lambda length: lst[start:start+length],range(1,len(lst)-start+1))), range(0,len(lst))))
 
def task_1(a):
    return reduce(lambda acc,x: acc+x,task_0(a),[])
 
def task_2(a):
    return list(map(lambda x: (x,sum(x),len(x)),task_1(a)))
    
def task_3(a,s):
    return max(filter(lambda x: x[1] < s,task_2(a)),key=lambda x: x[2])
 
def task(lst,s):
    return task_3(lst,s)
 
print(task([1,2,0,0,4,6],3))
5
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
28.03.2024, 17:28
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def func(lst: list[int], limit: int) -> int:
    result = 0
    for i in range(len(lst), 0, -1):
        for j in range(len(lst) - i - 1, -1, -1):
            s = sum(lst[j:j + i])
            if s <= limit and s > result:
                result = s
    return result
    
    
lst = [1,2,0,0,4,6]
limit = 3
print(func(lst, limit))
Добавлено через 29 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from itertools import product
 
def func(lst: list[int], limit: int) -> int:
    def fox_product(len_lst: int):
        # если очень сильно забить на оптимизацию, то получим это
        return product(range(len_lst + 1), repeat=2)
 
    def fox_slice(x):
        return lst[x[0]:x[1]]
 
    def fox_sum(x):
        return len(x), sum(x)
 
    def fox_filter(x):
        return x[1] <= limit
        
    def fox_map42(x):
        return x[0]
 
    return max(
        map(fox_map42,
        filter(fox_filter,
        map(fox_sum,
        map(fox_slice,
        fox_product(len(lst)
    ))))))
 
lst = [1,2,0,0,4,6]
limit = 3
print(func(lst, limit))
Добавлено через 3 минуты
Python
1
2
3
4
5
6
7
8
def func(lst: list[int], limit: int) -> int:
    return max(
        map(lambda x: x[0],
        filter(lambda x: x[1] <= limit,
        map(lambda x: (len(x), sum(x)),
        map(lambda x: lst[x[0]:x[1]],
        product(range(len(lst) + 1), repeat=2)
    )))))
4
0 / 0 / 0
Регистрация: 09.11.2022
Сообщений: 36
09.04.2024, 16:21  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from functools import reduce
 
def task_0(lst):
    return list(map(lambda start: list(map(lambda length: lst[start:start+length],range(1,len(lst)-start+1))), range(0,len(lst))))
 
def task_1(a):
    return reduce(lambda acc,x: acc+x,task_0(a),[])
 
def task_2(a):
    return list(map(lambda x: (x,sum(x),len(x)),task_1(a)))
    
def task_3(a,s):
    return max(filter(lambda x: x[1] <= s,task_2(a)),key=lambda x: x[2])
 
print(task_3([1,2,3,4,5,6,7,8,9],15))
.

Как передать код чтоб было использование рекурсии - это обязательно , также Важно:
использовать только вызовы функций, определение анонимных функций на основе вызовов других функций, рекурсию.
То есть запрещено использовать циклы, условные операторы, операторы присваивания, операторы контроля кроме return.
Помогите пожалуйста
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,710
Записей в блоге: 14
09.04.2024, 19:56
Plastic _frog_, ты же отдельную тему создал...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2024, 19:56
Помогаю со студенческими работами здесь

Составить программу вывода самой большой цифры в записи заданного числа
.составить программу вывода самой большой цифры в записи задданного числа только надо эти задачи решить с помощью строковых переменных...

Выделить из массива возрастающую последовательность максимальной длины
Дано натуральное число n и массив действительных чисел а. В данном массиве выбрать возрастающую последовательность максимальной длины.

Найти ряды с самой маленькой и самой большой сумой и выводить их. Массивы
Помогите ! Задана целочисленная матрица n * m . Написать программу, которая позволяет находить ряды с самой маленькой и самой большой...

Вывести данные о квартирах с самой большой площадью и самой маленькой
Задание 5: Структуры Дана информация о пяти квартирах. Запись имеет вид: фамилия владельца, площадь, число комнат, этаж. Вывести...

Поменять местами строчки с самой большой суммой и самой маленькой
Я ввёл рандомную матрицу 3x3 и посчитал сумму каждой строки, а теперь мне нужно, чтобы две строки с наибольшей и наименьшей суммой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru