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

Функциональное программирование

21.05.2021, 17:40. Показов 2197. Ответов 36

Студворк — интернет-сервис помощи студентам
Вот задание

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

В чем собственно проблема, я вывожу все числа которые больше заданного
А мне нужно вывести сумму которая не превышает заданное значение, так вот как это можно реализовать?
Вот мое решение:
Python
1
2
3
4
5
6
7
def prox(value, A):
    return list(filter(lambda x: x if x < int(value) else 0, A))
 
 
A = [1, 2, 34, 3, 45, 67, 28, 9, 19, 123, 234, 6, 7]
value = input("Введите значения - ")
print("Новый перечень чисел - " + str(prox(value, A)))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2021, 17:40
Ответы с готовыми решениями:

Функциональное программирование
Суть моего задания: найти локальный максимум в вручную заданном массиве. Я написал код в императивном виде, а нужно чтобы он был в...

Функциональное программирование
Задание со вложенными функциями, функциями с параметрами и без. В условии задания написано, что нужно создать функцию с 3-мя...

Функциональное программирование
Изучаю функции на python, необходима ваша помощь. Что не так в коде? Где? Почему? Зачем? Прошу не применять ООП и классы, хочу...

36
0 / 0 / 0
Регистрация: 15.11.2019
Сообщений: 29
22.05.2021, 10:13  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Viktorrus Посмотреть сообщение
Из условия не понятно, нужно это делать или нет. Если одинаковые не надо выводить, то нужно будет подумать как изменить код.
не нужно одинаковые выводить
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
22.05.2021, 10:17
Frostep23, Если одинаковые последовательности отбрасывать, то код будет такой
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
A = [1, 2, 34, 3, 45, 67, 28, 2, 44, 9, 19, 123, 134, 6, 7, 23, 4, 43]
#A = [1, 2, 34, 3, 45, 67, 28, 9, 19, 123, 234, 6, 7]
S = int(input("Введите предельное значение суммы  - "))
 
L = []
for i in range(len(A)):
    max_lst = []
    for j in range(len(A[i:])):
        s = sum(A[i:i+j+1])
        if s <= S:
            max_lst = A[i:i+j+1]
        else: break
    if max_lst != [] and not (max_lst in L):
        L.append(max_lst)
    max_lst = []
 
max_len = max(L, key=lambda x: len(x))
for lst in L:
    if len(lst) == len(max_len):
        print(lst)
Вывод
Python
1
2
3
Введите предельное значение суммы  - 2
[1]
[2]
0
0 / 0 / 0
Регистрация: 15.11.2019
Сообщений: 29
22.05.2021, 10:26  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Если одинаковые последовательности отбрасывать, то код будет такой
теперь только осталось переписать это еще раз только под функциональное, но это уже совсем другая история
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
22.05.2021, 10:37
Frostep23, Я до конца не понимаю, что такое функциональное программированию. Лутц например говорит, что функция map относится к функциональному программированию.
Если же Вашу задачу нужно оформить в виде функции, то это сделать легко. Это Вы можете сделать сами.

Добавлено через 5 минут
Frostep23, Например, можно ли в функциональном программировании использовать циклы? Если нельзя, то как решать задачи требующие цикла. Может через рекурсию?
В общем с функциональным программированием разбирайтесь сами, или кто то другой Вам подскажет.
Я в принципе не признаю никаких ограничений на питон, в том числе и ограничений на стиль программирования.
0
0 / 0 / 0
Регистрация: 15.11.2019
Сообщений: 29
22.05.2021, 10:37  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Я до конца не понимаю, что такое функциональное программированию. Лутц например говорит, что функция map относится к функциональному программированию.
Если же Вашу задачу нужно оформить в виде функции, то это сделать легко. Это Вы можете сделать сами.
вот что написано в методичке, может я не так написал просто

Для решения задачи а) использовать только вызовы функций, определения анонимных функций на основе вызовов других функций, рекурсию (то есть запрещено использовать циклы, условные операторы, операторы присваивания, операторы контроля кроме return).
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
22.05.2021, 10:40
Frostep23, Ну тогда Вам может кто то другой поможет.
Я принципиально не берусь за задачи с ограничениями.
Извините.
0
0 / 0 / 0
Регистрация: 15.11.2019
Сообщений: 29
22.05.2021, 10:43  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
Ну тогда Вам может кто то другой поможет.
Я принципиально не берусь за задачи с ограничениями.
Извините.
та я вас и не прошу этого делать, вы и так сделали много, самое главное описали алгоритм, спасибо вам за вашу помощь
Удачного дня!
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
22.05.2021, 11:54
Цитата Сообщение от Viktorrus Посмотреть сообщение
код дает не верное решение для t=1 и t=2
там достаточно знак на <= поменять.
Цитата Сообщение от Viktorrus Посмотреть сообщение
Но я производительностью никогда не заморачивался.
ну тогда разговаривать не о чем.

Не по теме:

надо изучать алгоритмы...

0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
22.05.2021, 12:25
Цитата Сообщение от eaa Посмотреть сообщение
там достаточно знак на <= поменять.
У Вас там два места, где есть < t . Я второго места не заметил и пробовал менять только в одном. Поэтому не получил правильного результата.
Уж извините, не знал, где править Ваш код.
Но после исправления Ваш код выдает для t=2
Python
1
2
3
[1]
[2]
[2]
,
а должно быть
Python
1
2
[1]
[2]
Но Вы уж исправляйте сами, не все уж мне исправлять.
Цитата Сообщение от eaa Посмотреть сообщение
надо изучать алгоритмы...
В мои 74 года поздно уже изучать все имеющиеся алгоритмы, память уже не та. Я предпочитаю создавать свои алгоритмы, которые соответствовали бы ИИ (моделированию мышления человека). Ваш же алгоритм не соответствует обычной модели мышления (то есть не соответствует ИИ). На листочке никто не решает такую задачу так, как в Вашем алгоритме.
Ваш код, это математическая оптимизация для повышения производительности, но не имеет ничего общего с ИИ.
Так что Вы продолжайте решать по своему, а я буду решать по своему.
Кстати, может у Вас есть алгоритм для кода в стиле функционального программирования? Что бы помочь ТС?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
22.05.2021, 12:33
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from collections import deque
 
def foo(a, maxSum):
    d = deque()
    sum_ = 0
    result = 0
    for x in a:
        while sum_ + x > maxSum and d:
            sum_ -= d.popleft()
        if sum_ + x <= maxSum:
            d.append(x)
            sum_ += x
            result = max(result, sum_)
        elif d:
            d.clear()
            sum_ = 0
    return result
    
assert foo((1, 2, 34, 3, 45, 67, 28, 9, 19, 123, 234, 6, 7), 1) == 1
assert foo((1, 2, 34, 3, 45, 67, 28, 9, 19, 123, 234, 6, 7), 2) == 2
assert foo((1, 2, 34, 3, 45, 67, 28, 9, 19, 123, 234, 6, 7), 3) == 3
assert foo((1, 2, 34, 3, 45, 67, 28, 9, 19, 123, 234, 6, 7), 36) == 36

Не по теме:

Предыдущие сообщения в теме не читал...

0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
22.05.2021, 12:36

Не по теме:

Цитата Сообщение от Viktorrus Посмотреть сообщение
но не имеет ничего общего с ИИ
Поправлю себя. На самом деле Ваш алгоритм, который кстати Вы не описали словами, это тоже ИИ, но не стандартного мышления обычного человека, а мышления математика.
Я же, как обычный человек, стремлюсь к простоте мышления.:)



Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Arsegg Посмотреть сообщение
Предыдущие сообщения в теме не читал...
В предыдущих сообщениях ТС уточнял условие задачи.:)

0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
22.05.2021, 12:42

Не по теме:

Цитата Сообщение от Viktorrus Посмотреть сообщение
Кстати, может у Вас есть алгоритм для кода в стиле функционального программирования? Что бы помочь ТС?
Сейчас придет Уважаемый КулХацкеръ и выполнит данное ТЗ.
P. S. Правда я на 100% уверен, что препод, когда давал задание ТСу, не имел в виду, что задание нужно выполнить в чисто функциональном стиле. Выражаясь по-французски, в одну строчку.



Добавлено через 4 минуты

Не по теме:

Цитата Сообщение от Viktorrus Посмотреть сообщение
В предыдущих сообщениях ТС уточнял условие задачи.:)
Пусть ТС вначале с ТЗ определится, а затем только создает соответствующую тему: никто не будет копошиться в раздутой теме ради новых уточнений ТЗ. Надо будет - доработает!

0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
22.05.2021, 12:46

Не по теме:

Arsegg, Кстати выводить нужно не числа а списки удовлетворяющие условию. Если их несколько, то выводить все, которые удовлетворяют условию, кроме тех, которые одинаковые.



Добавлено через 2 минуты
Arsegg, И по условию нужно использовать только функциональное программирование. Это значит, что в том числе нельзя использовать циклы, а вместо их рекурсию. У нас это не получилось, может у Вас получится.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
22.05.2021, 12:50
Цитата Сообщение от Viktorrus Посмотреть сообщение
Кстати выводить нужно не числа а списки удовлетворяющие условию. Если их несколько, то выводить все, которые удовлетворяют условию, кроме тех, которые одинаковые.
А мне нужно вывести сумму которая не превышает заданное значение, так вот как это можно реализовать?
Сумма есть число. Как ранее я уже упоминал, восстановить ответ по числу - не Rocket Science.

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Viktorrus Посмотреть сообщение
И по условию нужно использовать только функциональное программирование. Это значит, что в том числе нельзя использовать циклы, а вместо их рекурсию.
Даже пытаться не буду - такие синтетические задачи на ФП не вызывают восторга.

0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
22.05.2021, 13:12
Цитата Сообщение от Arsegg Посмотреть сообщение
Сумма есть число
Бесспорно.
Просто выдержка
Цитата Сообщение от Frostep23 Посмотреть сообщение
А мне нужно вывести сумму которая не превышает заданное значение,
Это не из условия. ТС просто оговорился. Ну путаник он.
В условии Выше говорится так
Цитата Сообщение от Frostep23 Посмотреть сообщение
Выделить из заданного перечня чисел последовательность длинной наибольшей длины,
состоящий из элементов, расположенных подряд, сумма которых не превышает заданное значение.
То есть решением должна быть одна или несколько удовлетворяющих условию последовательностей (например списков, но можно и кортежей).

Добавлено через 4 минуты
Я уточнял это у ТС.
Arsegg, Но в принципе Вы правы, пусть ТС с учетом всех замечаний напишет правильно условие, Хотя такое дурацкое условие ему дал преподаватель. И переделывать его он как бы не решается.
Уф, все.
Дальше сами.
0
22.05.2021, 13:16

Не по теме:

Цитата Сообщение от Viktorrus Посмотреть сообщение
Это не из условия. ТС просто оговорился. Ну путаник он.
Тут не просто оговорился, а "выдумал" совершенно новое задание.

0
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
30.05.2021, 12:24
Цитата Сообщение от Arsegg Посмотреть сообщение

Не по теме:

Сейчас придет ... КулХацкеръ и выполнит данное ТЗ ... в одну строчку.

Хах, это можно:
Python
1
print(*(lambda a, limit: sorted(set(str(w) for win in [[[(sum(w), w) for w in [a[i:i+k] for i in range(len(a)-k+1)]] for k in range(1, len(a)+1)]] for s, w in win[max(k for e, k in [(min(s)[0], k) for k, s in enumerate(win)] if e <= limit)] if s <= limit)))([1, 2, 34, 3, 45, 67, 28, 2, 44, 9, 19, 123, 134, 6, 7, 23, 4, 43], int(input('введите предел суммы: '))), sep='\n')
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.05.2021, 12:24
Помогаю со студенческими работами здесь

Функциональное программирование. Список из функций
Подскажите пожалуйста, как здесь быть. Нужно вывести список полученных значений (). А выводит только .Как можно вывести значение функции?...

Как переписать под функциональное программирование
Вот само задание: Толковый словарь определяет для каждого слова его толкование. Вывести на экран списки, первый из которых состоит из...

Как записать задачу, используя функциональное программирование?
Добрый день, Есть задача Во входном файле записан текст. Словом считается последовательность непробельных символов идущих...

Функциональное программирование
Написать функцию для нахождения коэффициентов многочлена являющегося производной заданного многочлена (коэффициеты всех многочленов...

Функциональное программирование
Читал или слышал, что те, кто выучил ООП, потом не могут изучить функциональное программирование. Достаточно ли будет изучить...


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

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

Новые блоги и статьи
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru