![]() |
|
|
![]()
|
|
| Metalex |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 635 Регистрация: 22.10.2008 Где: Украина-ZPсity Репутация: нет Всего: нет |
Пожалуйста, помогите переделать мое решение данной задачи:
На вход подается список чисел (A). Вычислить новый список чисел (B), где Bi = среднему арифметическому всего списка A, кроме Ai. Т.е. если есть список (1 2 3), то B1 = (2+3)/2; B2 = (1+3)/2; B3 = (1+2)/2;
Результат:
Необходимо, чтобы программа возвращала список, а не консы. Спасибо. -------------------- Don't let the system get you down. |
||||
|
|||||
| _sg |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 16.5.2007 Репутация: 2 Всего: 2 |
или:
Это сообщение отредактировал(а) _sg - 2.12.2012, 19:07 --------------------
vk.com/ansicommonlisp |
||||
|
|||||
| Metalex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 635 Регистрация: 22.10.2008 Где: Украина-ZPсity Репутация: нет Всего: нет |
_sg, и снова большое спасибо
Мне стоило полностью написать задание, там сказано, что надо использовать do и loop. Ваше решение я изучу как более реальный, а не учебный вариант. Возможно ли исправить мое с консов на список? -------------------- Don't let the system get you down. |
|||
|
||||
| _sg |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 16.5.2007 Репутация: 2 Всего: 2 |
Здорово, что Вам удалось получить результат, Ваше решение сложно доработать, обычно в Лиспе не присваивают значения переменным, а используют вложение функций - одна функция принимает аргументы и возвращает результат, который, в свою очередь является аргументом другой функции и т. д., например (function3 (function2 (function1 arg))), если нельзя обойтись без присваивания, то чаще используют не setq, а let или let* (про setq и setf лучше забыть):
вариант с loop:
или:
можете попробовать переделать цикл loop в do или dolist. Это сообщение отредактировал(а) _sg - 2.12.2012, 23:34 --------------------
vk.com/ansicommonlisp |
||||||||
|
|||||||||
| _sg |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 16.5.2007 Репутация: 2 Всего: 2 |
при помощи labels - обернуть во вложенную функцию average c параметрами n = (1- (length w)) и m = (apply #'+ w):
или lambda - обернуть во вложенную безымянную функцию c параметрами n = (1- (length w)) и m = (apply #'+ w):
--------------------
vk.com/ansicommonlisp |
||||
|
|||||
| Catstail |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 14.1.2013 Репутация: нет Всего: нет |
А так:
|
|||
|
||||
![]()
|
| Правила форума LISP | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | LISP | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |