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

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

09.04.2024, 18:24. Показов 1042. Ответов 14

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

Как переделать код чтоб было использование рекурсии - это обязательно ,

также Важно:
использовать только вызовы функций, определение анонимных функций на основе вызовов других функций, рекурсию.
То есть запрещено использовать циклы, условные операторы, операторы присваивания, операторы контроля кроме return.
Помогите пожалуйста
Есть код но нужно обязательно чтоб была ещё рекурсия

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))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.04.2024, 18:24
Ответы с готовыми решениями:

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

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

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

14
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
09.04.2024, 19:32
Plastic _frog_, знакомый код. Где я его мог видеть?

Проще всего "добавить рекурсию" так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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_1(a):
    if len(a)==0:
        return []
    else:
        return a[0]+task_1(a[1:])
 
def task_2(a):
    return list(map(lambda x: (x,sum(x),len(x)),task_1(task_0(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))
3
0 / 0 / 0
Регистрация: 09.11.2022
Сообщений: 36
09.04.2024, 20:33  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
def task_1(a):
    if len(a)==0:
        return []
    else:
        return a[0]+task_1(a[1:])
По условию задачи запрещено использовать условные операторы(
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
09.04.2024, 20:50
Plastic _frog_, без условного оператора рекурсию не построишь. А где я этот код видел?
1
0 / 0 / 0
Регистрация: 09.11.2022
Сообщений: 36
09.04.2024, 21:37  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Plastic _frog_, без условного оператора рекурсию не построишь. А где я этот код видел?
Цитата Сообщение от Catstail Посмотреть сообщение
без условного оператора рекурсию не построишь
Возможно ли как-то с помощью "filter" ?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
10.04.2024, 07:27
Цитата Сообщение от Plastic _frog_ Посмотреть сообщение
с помощью "filter"
- всё и сделано с помощью filter, но без рекурсии.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
13.04.2024, 05:20
Цитата Сообщение от Catstail Посмотреть сообщение
без условного оператора рекурсию не построишь.
В условии нет запрета на исключения. Типа так:

Python
1
2
3
4
5
6
7
8
def f(n: int) -> int:
    _ = 1 // n
    try:
        return n + f(n - 1)
    except ZeroDivisionError:
        return n
    
print(f(5))
Добавлено через 46 секунд
Правильнее так:
Python
1
2
3
4
5
6
def f(n: int) -> int:
    try:
        _ = 1 // n
    except ZeroDivisionError:
        return 0
    return n + f(n - 1)
Добавлено через 1 минуту
Python
1
2
3
4
5
def task_1(a: list):
    try:
        return a[0] + task_1(a[1:])
    except IndexError:
        return []
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
13.04.2024, 05:58
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
В условии нет запрета на исключения.
- тогда сразу же следует два вопроса:

1) не является ли группа try-except завуалированной формой ветвления? (Ответ - да, безусловно)
2) какова методическая цель этой задачи? Догадаться, что if можно смоделировать с помощью try-except? Зачем? (Учитывая общий "настрой" этой задачи, последнее крайне маловероятно)

Кстати, можно с пом. while, но смысл?

Python
1
2
3
4
5
6
7
def sum_list(lst):
    sz=len(lst)
    while sz > 0:
        return lst[0]+sum_list(lst[1:])
    return 0
    
print(sum_list([1,2,3,4]))
1
0 / 0 / 0
Регистрация: 09.11.2022
Сообщений: 36
13.04.2024, 13:30  [ТС]
Как исправить код, чтоб был без map, filter и reduce , но при этом использовать только вызовы функций, определение анонимных функций на основе вызовов других функций, рекурсию.
То есть запрещено использовать циклы, условные операторы, операторы присваивания, операторы контроля кроме return?
Помогите пожалуйста.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from functools import reduce
 
def gen_sublists(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 concaten_list(a):
    return (len(a) != 0 and (a[0] + concaten_list(a[1:] )) or [] )
 
 
def analyze_sublists(a):
    return list(map(lambda x: (x,sum(x),len(x)),concaten_list(gen_sublists(a))))
    
def find_max_sublist(a,s):
    return max(filter(lambda x: x[1] <= s,analyze_sublists(a)),key=lambda x: x[2])
 
print(find_max_sublist([1,2,3,4,5,6,7,8,9],15))
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
13.04.2024, 15:46
Без filter() решение невозможно, автор толстый тролль.

Python
1
2
3
4
5
6
7
8
9
10
11
12
def func(lst: list[int], limit: int) -> list[int]:
    for i in range(len(lst), 0, -1):
        for j in range(len(lst) - i - 1, -1, -1):
            rrr = lst[j:j + i]
            if sum(rrr) <= limit:
                return rrr
    return []
    
    
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
def f1(n: int):
    yield from range(n - 1, 0, -1)
 
def f2(n: int, i: int):
    yield from range(n - i - 1, -1, -1)
 
def f3(n: int):
    g = f1(n)
    
    def f4():
        try:
            i = next(g)
        except StopIteration:
            return
        g2 = f2(n, i)
            
        def f5():
            try:
                j = next(g2)
            except StopIteration:
                return
            print(i, j + i)
            f5()
            
        f5()
        f4()
    f4()
    
print(f3(6))
Добавлено через 23 минуты
Цитата Сообщение от Plastic _frog_ Посмотреть сообщение
был без map, filter и reduce , но при этом использовать только вызовы функций, определение анонимных функций на основе вызовов других функций, рекурсию.
То есть запрещено использовать циклы, условные операторы, операторы присваивания, операторы контроля кроме return?
Помогите пожалуйста.
Python
1
2
3
4
5
6
7
8
9
10
11
12
def func(lst: list[int], limit: int) -> list:
    s = base64.b64decode(b'''\
ZGVmIGZ1bmMobCxtKToKIHE9cmFuZ2UKIHc9bGVuKGwpCiBmb3IgaSBpbiBxKHcsMCwtMSk6CiAg
Zm9yIGogaW4gcSh3LWktMSwtMSwtMSk6CiAgIHI9bFtqOmoraV0KICAgaWYgc3VtKHIpPD1tOnJl
dHVybiByCiByZXR1cm4gW10=''')
    exec(compile(s, '<string>', 'exec'), globals())
    return func(lst, limit)
 
    
lst = [1,2,0,0,4,6]
limit = 3
print(func(lst, limit))
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
13.04.2024, 21:49
Цитата Сообщение от Plastic _frog_ Посмотреть сообщение
использовать
Цитата Сообщение от Plastic _frog_ Посмотреть сообщение
рекурсию
Цитата Сообщение от Plastic _frog_ Посмотреть сообщение
запрещено использовать
Цитата Сообщение от Plastic _frog_ Посмотреть сообщение
условные операторы
Взаимоисключающие условия. Приведи полный текст задания без своей отсебятины.
0
0 / 0 / 0
Регистрация: 09.11.2022
Сообщений: 36
13.04.2024, 23:20  [ТС]
Задание :
Выделить из заданного перечня чисел последовательность самой большой длины, состоящую из элементов, расположенных подряд, сумма которых не превышает заданное значение.

Важно:
использовать только вызовы функций, определение анонимных функций на основе вызовов других функций, рекурсию.
То есть запрещено использовать циклы, условные операторы, операторы присваивания, операторы контроля кроме return.
Map, filter, reduce использовать нельзя .
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
14.04.2024, 06:46
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
автор толстый тролль.
+ 1000!
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
14.04.2024, 08:09
Цитата Сообщение от Catstail Посмотреть сообщение
2) какова методическая цель этой задачи?
Полностью с вам согласен.

Я ещё могу понять (но не принять), когда изучают list comprehension, хотя от него по моему мнению больше проблем. И понимаю, когда знакомят с функциональным программированием (опять же имхо в питоне оно не очень). Вот продублирую свой же пример:

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)
    )))))
Тут чаще всего подход, что мы берём что-то итерируемое и модицифируем map-ами или фильтруем/сортируем в функциональном стиле.

Но запрет одновременно и циклов, и map'ы…
2
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
14.04.2024, 18:08
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Но запрет одновременно и циклов, и map'ы…
Ну это очевидно, что отсебятина от ТСа, т. к. не может объяснить решение преподу. Как и рекурсия без условия выхода из нее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.04.2024, 18:08
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
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