Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 30.10.2014
Сообщений: 44
Записей в блоге: 1

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

03.12.2014, 10:48. Показов 679. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста!

Нужно удалять подсписки основного списка, такие, что их глубина равна заданной. У функции должно быть два аргумента: список и глубина.
Я реализовала вот так:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(defun remsub (dep L)
            (cond
                ((null L) nil)
                ((atom L) L)
                (T ((lambda (head tail)
                       (cond
                            ((atom head) (cons head (remsub dep tail)))
                            ((= dep 0) (remsub dep tail ))
                            (T (cons (remsub (- 1 dep) head) 
                                     (remsub dep tail)))))
                            (car L)(cdr L)))))
     
( print ( remsub 1 '( A B (C ( (D E) F (G) H) I ( J (K ( ) L) ) )
        (M ( N ( (O P ( ) ) ) Q ( (R) ( S T) ) ) (U ( (V) W) ) )
        ( (X) ( ) ) ( ( ( ( ( ( ) Y) ) ) ) ) ) ) )
( print ( remsub 1 '( ( ) ( ( ) ) ) ) )
( print ( remsub 1 '( ( ) ) ) )
( print ( remsub 1 '( ) ) )
Но делает не то что нужно.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.12.2014, 10:48
Ответы с готовыми решениями:

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

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

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

2
 Аватар для _sg
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
03.12.2014, 11:15
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(defun dump-level (w n)
  (when w ((lambda (a d)
             (cond ((atom a) (cons a (dump-level d n)))
                   ((= n 0) (dump-level d n))
                   ((cons (dump-level a (1- n)) (dump-level d n)))))
           (car w) (cdr w))))
 
> (dump-level '(5 (4 (6)) (1 7) (8 (3 (5)))) 0)
(5)
> (dump-level '(5 (4 (6)) (1 7) (8 (3 (5)))) 1)
(5 (4) (1 7) (8))
> (dump-level '(5 (4 (6)) (1 7) (8 (3 (5)))) 2)
(5 (4 (6)) (1 7) (8 (3)))
> (dump-level '(5 (4 (6)) (1 7) (8 (3 (5)))) 3)
(5 (4 (6)) (1 7) (8 (3 (5))))
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun dump-level (w n &aux (a (car w)) (d (cdr w)))
  (cond ((null w) nil)
        ((atom a) (cons a (dump-level d n)))
        ((= n 0) (dump-level d n))
        ((cons (dump-level a (1- n)) (dump-level d n)))))
 
> (dump-level '(5 (4 (6)) (1 7) (8 (3 (5)))) 0)
(5)
> (dump-level '(5 (4 (6)) (1 7) (8 (3 (5)))) 1)
(5 (4) (1 7) (8))
> (dump-level '(5 (4 (6)) (1 7) (8 (3 (5)))) 2)
(5 (4 (6)) (1 7) (8 (3)))
> (dump-level '(5 (4 (6)) (1 7) (8 (3 (5)))) 3)
(5 (4 (6)) (1 7) (8 (3 (5))))
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38190 / 21125 / 4307
Регистрация: 12.02.2012
Сообщений: 34,731
Записей в блоге: 14
03.12.2014, 12:36
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun del-deep (lst deep)
  (cond ((zerop deep) (remove-if-not #'atom lst))
          (t (mapcar #'(lambda (x) (if (atom x) x (del-deep x (- deep 1)))) lst))))
     
==> del-deep
 
(del-deep '(5 (4 (6)) (1 7) (8 (3 (5)))) 2)
 
==> (5 (4 (6)) (1 7) (8 (3)))
 
(del-deep '(5 (4 (6)) (1 7) (8 (3 (5)))) 1)
 
==> (5 (4) (1 7) (8))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.12.2014, 12:36
Помогаю со студенческими работами здесь

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

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

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

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

Разделение списка на подсписки: в первый n элементов с начала списка, во второй оставшиеся
Определите функцию, осуществляющую разделение исходного списка на два подсписка. В первый из них должно попасть указанное количество...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в 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-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru