Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 18

GNU Common Lisp. сумма отрицательных элементов списка.

16.12.2011, 14:26. Показов 2213. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан список, к примеру '(-7 1 -2 4 9 -1 -3), нужно получить список '(-7 -2 -1 -3). в полученном списке подсчитать сумму. должно получиться '(-13 -10 -9 -7).
помогите, пожалуйста. в прологе данную задачу решила, а вот в Lisp'e не могу понять что делать(

Добавлено через 6 минут
полная формулировка задания звучит так:сформировать список L1 из элементов: сумма отрицательных элементов всего списка L, сумма отрицательных элементов из первых n-1 элементов L и т.д
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2011, 14:26
Ответы с готовыми решениями:

сумма ряда. GNU Common Lisp
вычислить сумму ряда 2/1+3/2...+(n+1)/n. у меня выводит ошибку в do, что не так??? (defun d (n) (do ((result...

Списки. GNU Common Lisp
1) сформировать список L1 из элементов: произведение всех элементов исходного списка L, произведение n-1 последних элементов, произведение...

GNU Common Lisp. списки
Здравствуйте. помогите решить задачу написать программу, реализующую тел.справочник. в нем содержится информация о каждом абоненте: Ф,И,О,...

6
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
16.12.2011, 15:12
Lisp
1
2
3
4
5
6
7
8
(defun f (l)
           (let ((blackyui (remove-if #'plusp l)))
             (if (null l) blackyui
                 (cons (apply #'+ blackyui)
                       (f (butlast blackyui))))))
 
CL-USER> (f '(-7 1 -2 4 9 -1 -3))
(-13 -10 -9 -7)
(с) индусский код

Добавлено через 28 минут
или так
Lisp
1
2
3
4
5
6
(defun f (l)
           (loop for a on (reverse (remove-if #'plusp l))
                collect (apply #'+ a)))
 
CL-USER> (f '(-7 1 -2 4 9 -1 -3))
(-13 -10 -9 -7)
1
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 18
16.12.2011, 15:38  [ТС]
спасибо большое!
я хотела бы уточнить по примененным функциям:
let - сопоставляет локальным переменным независимые выражения. С ее помощью можно
вынести из сложного определения любые совпадающие подвыражения.
В нашем случае что она выносит?

blackyui - произвольная функция/переменная. для чего мы используем?

plusp - проверяет положительность аргумента
apply - применяет функцию # (????) к списку аргументов.
butlast - возвращает копию списка без последней cons-ячейки. Если вызывается с целочисленным аргументом n, исключает последние n ячеек.

можете объяснить как они работают?
0
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
16.12.2011, 15:54
в blackyui храним список без положительных чисел, после этого проверяем, не пустой ли исходный список, если да, то возвращаем blackyui, если нет то начинаем строить новый список, первым элементом которого будет сумма элементов blackyui
Lisp
1
(apply #'+ blackyui)
а вторым, вызов f с "обрезанным с конца" blackyui.
blackyui - переменная.
ок?)

Добавлено через 6 минут
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun f (l)
           (let ((blackyui (remove-if #'plusp l)))
             (format t "blackyui -> ~a sum -> ~a~%" blackyui (apply #'+ blackyui))
             (if (null l) blackyui
                 (cons (apply #'+ blackyui)
                       (f (butlast blackyui))))))
 
CL-USER> (f '(-7 1 -2 4 9 -1 -3))
blackyui -> (-7 -2 -1 -3) sum -> -13
blackyui -> (-7 -2 -1) sum -> -10
blackyui -> (-7 -2) sum -> -9
blackyui -> (-7) sum -> -7
blackyui -> NIL sum -> 0
(-13 -10 -9 -7)
0
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 18
16.12.2011, 15:57  [ТС]
во второй программе:
loop - макрос для организации цикли*ческих вычислений
что делает строка loop for a on ?
collect - макрос для внутреннего цикла?

Добавлено через 49 секунд
в первой поняла) а во второй программе?
0
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
16.12.2011, 16:02
Lisp
1
2
3
4
5
6
7
(loop for a on '(1 2 3 4 5)
              collect a)
((1 2 3 4 5) (2 3 4 5) (3 4 5) (4 5) (5))
 
(loop for a in '(1 2 3 4 5)
              summing a)
15
0
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 18
16.12.2011, 16:03  [ТС]
поняла принцип работы. спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.12.2011, 16:03
Помогаю со студенческими работами здесь

Произведение ряда с двумя неизвестными GNU Common Lisp
Помогите, пожалуйста, новичку, в Lisp не понимаю ничего, а лабораторную завтра нужно сдать. Задание такое, посчитать ряд:...

Сумма элементов списка Lisp
Написать программу: задан список. Найти сумму первого, третьего и седьмого элементов списка, если указанные элементы - числа. В противном...

Записать на языке Common Lisp форму для вывода списка значений функции y(x)
Пожалуйста поиогите с задачей: Записать на языке Common Lisp форму для вывода списка значений функции y(x). При определении функции...

Clojure Сумма чисел от 0 до 100 в common lisp
Помогите решить задачу Сумма чисел от 0 до 100 в common lisp

Книги или другой источник, где описана история версий Lisp и Common Lisp
Доброго времени суток.Такой вопрос,знаете какой-нибудь источник,где описана история версий Lisp и Common Lisp.Только не всякие...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru