Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 09.11.2022
Сообщений: 36

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

27.03.2024, 19:05. Показов 591. Ответов 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
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 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
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 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): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru