Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2 / 2 / 2
Регистрация: 30.04.2012
Сообщений: 22

Обработка списка

15.05.2012, 17:19. Показов 1578. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Помогите пожалуйста со следующим заданием:

Определите функцию (f s), результатом которой является список, получающийся после удаления на всех уровнях всех положительных элементов списка чисел s.

Собственно вопросы возникли по следующим темам:

1) Каким образом можно обработать поэлементно весь список?
2) Как можно сдвинуть элементы списка в самом списке?

Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2012, 17:19
Ответы с готовыми решениями:

Обработка списка
Здравствуйте! Помогите пожалуйста! Нужно удалять подсписки основного списка, такие, что их глубина равна заданной. У функции должно...

Обработка списка
Доброго времени суток. Есть задание - написать fuнкцию, кoтoрая, выдает элeмeнт-список пo заданoму нoмeру n из задaннoгo списка,...

Обработка многоуровнего списка
Не могли бы вы помочь, есть ли в лиспе функция, которая из многоуровнего списка делает одноуровневый. Или как написать такую функцию, я...

10
313 / 268 / 5
Регистрация: 03.04.2011
Сообщений: 456
15.05.2012, 20:16
Цитата Сообщение от Fenix345 Посмотреть сообщение
1) Каким образом можно обработать поэлементно весь список?
Либо с помощью рекурсии, либо итерационно с помощью циклических конструкций или операторного стиля.
Цитата Сообщение от Fenix345 Посмотреть сообщение
2) Как можно сдвинуть элементы списка в самом списке?
Либо используя деструктивные операции, либо генерируя новый список, в который не войдут элементы, не удовлетворяющие предикату.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun f (list)
    (if list
        (let ((head (car list))
              (tail (cdr list)))
          (if (atom head)
              (if (plusp head)
                  (f tail)
                  (cons head (f tail)))
              (cons (f head) (f tail))))))
 
CL-USER> (f '(1 2 3 (2 (2 0) -1) 9 0 -4))
(((0) -1) 0 -4)
1
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
15.05.2012, 20:29
как вариант:
Lisp
1
2
3
4
5
6
7
8
(defun dp (w)
  (cond ((null w) nil)
        ((consp (car w)) (cons (dp (car w)) (dp (cdr w))))
        ((plusp (car w)) (dp (cdr w)))
        ((cons (car w) (dp (cdr w))))))
 
> (dp '(1 (-1)))
((-1))
Lisp
1
2
3
4
5
6
7
8
(defun dp (w &aux (a (car w)))
  (cond ((null w) nil)
        ((consp a) (cons (dp a) (dp (cdr w))))
        ((plusp a) (dp (cdr w)))
        ((cons a (dp (cdr w))))))
 
> (dp '(1 (-1)))
((-1))
1
15.05.2012, 20:34

Не по теме:

_sg, а почему используется именно w в качестве имени формального параметра? :scratch:

0
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
15.05.2012, 20:36
для краткости и единообразия и сходства по начертанию w - больший список, v - меньший
0
15.05.2012, 20:39

Не по теме:

Цитата Сообщение от _sg Посмотреть сообщение
для краткости и единообразия и сходства по начертанию w - больший список, v - меньший
Хм, интересная идея, надо взять на вооружение.

0
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
15.05.2012, 20:44
cпасибо, можно еще (car w) менять на а, и (cdr w) на d
Lisp
1
2
3
4
5
6
7
8
(defun dp (w &aux (a (car w)) (d (cdr w)))
  (cond ((null w) nil)
        ((consp a) (cons (dp a) (dp d)))
        ((plusp a) (dp d))
        ((cons a (dp d)))))
 
> (dp '(1 (-1)))
((-1))
Lisp
1
2
3
4
5
6
7
8
9
10
(defun dp (w)
  (lambda (a d)
    (cond ((null w) nil)
          ((consp a) (cons (dp a) (dp d)))
          ((plusp a) (dp d))
          ((cons a (dp d)))))
  (car w) (cdr w))
 
> (dp '(1 (-1)))
((-1))
0
2 / 2 / 2
Регистрация: 30.04.2012
Сообщений: 22
15.05.2012, 21:01  [ТС]
Спасибо за отклик.

ПС Если не сложно, то посоветуйте какую нибудь литературу по common lisp. На русском языке и желательно по больше примеров.
0
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
15.05.2012, 21:07
Абельсон Х., Сассман Д. Структура и интерпретация компьютерных программ. – М.: Добросвет, 2004. – 576 с. – англ. – Mode of access: http://mitpress.mit.edu/sicp/ Видеозаписи лекций – Mode of access: http://groups.csail.mit.edu/ma... -lectures/
Хювёнен Э., Сеппянен И. Мир Лиспа. В 2-х т. Т.1: Введение в язык Лисп и функциональное программирование. – М.: Мир, 1990. – 439 с. – Mode of access: http://lisp.ru/page.php?id=17
Allen Colin, Dhagat Maneesh. LISP Primer. – 1992. – 134 p. – Mode of access: http://www.svbug.com/documentation/lisp/
Burgemeister Bert. Common Lisp Quick Reference. – 2011. – 52 p. – Mode of access: http://clqr.boundp.org/clqr-a4-booklet-all.pdf
Cooper David J., Jr. Basic Lisp Techniques. 2003. – 92 p. – Mode of access: http://www.franz.com/resources... r.book.pdf
Graham Paul. ANSI Common Lisp. – Upper Saddle River, NJ: Prentice Hall, 1995, 432 p. – chapters 1-3. – Mode of access: http://www.paulgraham.com/acl.html, перевод: – Mode of access: http://acl.achim.ru/book/get_chapter/1
Graham Paul. On Lisp. – Upper Saddle River, NJ: Prentice Hall, 1993, 413 p. – Mode of access: http://lib.store.yahoo.net/lib... onlisp.pdf
Common Lisp HyperSpec. – Mode of access: ftp://ftp.lispworks.com/pub/so... 7-0.tar.gz
Knott Gary D. Interpreting LISP. – 1997. – 103 p. – Mode of access: http://www.civilized.com/files/lispbook.pdf
McCarthy et al. LISP 1.5 Programmer's Manual. The M.I.T. Press, 1962, – 106 p. – Mode of access: http://www.softwarepreservatio... Manual.pdf
Norvig Peter, Pitman Kent. Tutorial on Good Lisp Programming Style. 1993. – 116. – Mode of access: http://obfusco.com/tmp/luv-slides.pdf
Norvig Peter. Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp. Morgan Kaufmann, 1992.- 946 p.
Pierce David R., Shapiro Stuart C. Common Lisp: A Brief Tutorial. – 2004 – 32 p. – Mode of access: http://curry.ateneo.net/~jpv/c... torial.pdf
Russell Stuart J., Norvig Peter. Artificial Intelligence A Modern Approach. – Englewood Cliffs, New Jersey: Prentice Hall, 1995. – 932 p.
Seibel P. Practical Common Lisp. New York, NY: Apress, 2005. – 499 p. – Mode of access: http://www.gigamonkeys.com/book/, перевод – Mode of access: http://pcl.catap.ru/doku.php?id=pcl, PDF-версия перевода – Mode of access: http://lisper.ru/pcl/pcl.pdf
Shapiro Stuart C. Common Lisp: An Interactive Approach.- N.Y.: Computer Science Press, 1992. – 322 p. – Mode of access: http://www.cse.buffalo.edu/~sh... onLisp.pdf
Steele Guy L. Common Lisp the Language, 2nd edition. Thinking Machines, Inc. Digital Press, 1990 – 1029 p. – Mode of access: http://www.cs.cmu.edu/Groups/A... cltl2.html
Tanimoto Steven L. The Elements of Artificial Intelligence. An introduction Using Lisp. – Seattle, Washington: Computer Science Press, 1987. – 529 p.
Touretzky D.S. Common Lisp: A Gentle Introduction to Symbolic Computation. – Redwood City, California: Carnegie Mellon University: The Benjamin/Cummings Publishing Company. – 1990 – 587 p. – Mode of access: http://www.cs.cmu.edu/~dst/LispBook/book.pdf
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38189 / 21124 / 4307
Регистрация: 12.02.2012
Сообщений: 34,730
Записей в блоге: 14
16.05.2012, 07:28
Вот еще решение:

Lisp
1
2
3
4
5
6
(defun del-a-i (x)
 (let ((r nil))
      (dolist (i x r)
          (cond 
               ((and (atom i) (not (>= i 0))) (setq r (append r (list i))))
               ((listp i) (setq r (append r (list (del-a-i i)))))))))
1
2 / 2 / 2
Регистрация: 30.04.2012
Сообщений: 22
17.05.2012, 13:34  [ТС]
Всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.05.2012, 13:34
Помогаю со студенческими работами здесь

Обработка многоуровнего списка
Добрый день. Помогите, пожалуйста, разобраться со следующей проблемой: необходимо переделать код, что бы была возможность обработать ...

Обработка списка из трех элементов
Пытаюсь сделать так, чтобы если в списке из трех элементов (каждый элемент передается в функцию), если первый и последний элементы являются...

Обработка списка (общая рекурсия)
Здравствуйте!!! У меня вот какая сложность: есть задача: дан список из положительных чисел, необходимо построить список, элементами ...

Считывание/запись слов из файла. Обработка списка слов
Помогите, пожалуйста, написать программу на языке Lisp. Задание:В файле записаны слова, некоторые из них повторяются. Требуется считывать...

Обработка списка: после каждого нуля добавить предшествующую часть списка
Дан список чисел, нужно после каждого нуля добавить предшествующую часть списка. Написал что-то, но не работает, выдает ошибку. sp _...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru