0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 31
1

Написать рекурсивную функцию, удаляющую из многоуровневого списка символы

24.03.2020, 21:10. Показов 524. Ответов 8
Метки нет (Все метки)

Напишите функцию, аргументом которой является список, удаляющую из этого списка все нечисловые атомы на всех уровнях (список может быть многоуровневым).
Помогите, пожалуйста. Загвоздка в том, что нельзя использовать функционалы и присвоение!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2020, 21:10
Ответы с готовыми решениями:

Написать рекурсивную функцию, удаляющую x (последнее вхождение) из списка l
Прочитать из файла значение переменной x. Написать рекурсивную функцию, удаляющую x (последнее...

Написать функцию, которая из заданного многоуровневого списка извлекает все подсписки уровня n
Написать функцию в lisp, которая из заданного многоуровневого списка извлекает все подсписки уровня...

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

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

8
4684 / 4380 / 379
Регистрация: 12.05.2012
Сообщений: 3,087
24.03.2020, 23:21 2
Lisp
1
2
3
4
5
6
7
8
(defun ns (w &aux (a (car w)))
  (cond ((null w) nil)
        ((atom a) (if (numberp a) (cons a (ns (cdr w)))
                      (ns (cdr w))))
        ((cons (ns a) (ns (cdr w))))))
 
> (ns '((1 a) 2 b (((3) (c 4)))))
((1) 2 (((3) (4))))
Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
8
(defun ns (w &aux (a (car w)) (d (cdr w)))
  (cond ((null w) nil)
        ((atom a) (if (numberp a) (cons a (ns d))
                      (ns d)))
        ((cons (ns a) (ns d)))))
 
> (ns '((1 a) 2 b (((3) (c 4)))))
((1) 2 (((3) (4))))
Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
(defun ns (w &aux (a (car w)) (d (cdr w)))
  (when w (if (atom a) (if (numberp a) (cons a (ns d))
                           (ns d))
              (cons (ns a) (ns d)))))
 
> (ns '((1 a) 2 b (((3) (c 4)))))
((1) 2 (((3) (4))))
Добавлено через 3 минуты
Lisp
1
2
3
4
5
6
7
(defun ns (w)
  (loop for a in w
        if (listp a) collect (ns a)
        else if (numberp a) collect a))
 
> (ns '((1 a) 2 b (((3) (c 4)))))
((1) 2 (((3) (4))))
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
34317 / 19107 / 4019
Регистрация: 12.02.2012
Сообщений: 32,002
Записей в блоге: 13
25.03.2020, 07:08 3
HomeLisp:

Lisp
1
2
3
4
5
6
7
8
9
10
(defun task (list)
  (let ((r nil))
    (iter (for a in list)
          (cond ((numberp a) (collecting a into r))
                ((listp a) (collecting (task a) into r)))) r))
 
==> TASK
 
(task '(1 2 a (b c 4)))
==> (1 2 (4))
1
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 31
25.03.2020, 08:16  [ТС] 4
Catstail, а как это будет выглядеть на CLisp?
0
4684 / 4380 / 379
Регистрация: 12.05.2012
Сообщений: 3,087
25.03.2020, 09:05 5
CLISP
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
34317 / 19107 / 4019
Регистрация: 12.02.2012
Сообщений: 32,002
Записей в блоге: 13
25.03.2020, 09:38 6
Цитата Сообщение от blurryfacebeat Посмотреть сообщение
Catstail, а как это будет выглядеть на CLisp?
- так же и будет, если установить пакет iter
1
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 31
30.03.2020, 15:56  [ТС] 7
Catstail, преподаватель сказал сделать лабу без дополнительных библиотек. Чистый CLisp. Это ад какой-то
0
helter
30.03.2020, 16:23
  #8

Не по теме:

CLISP - название одного старого интерпретатора, а язык сокращается CL.

0
Модератор
Эксперт функциональных языков программированияЭксперт Python
34317 / 19107 / 4019
Регистрация: 12.02.2012
Сообщений: 32,002
Записей в блоге: 13
30.03.2020, 17:50 9
Цитата Сообщение от blurryfacebeat Посмотреть сообщение
Чистый CLisp. Это ад какой-то
- красивый язык... Конечно, для тех кто дальше html не продвинулся, могут быть трудности.

Lisp
1
2
3
4
5
6
7
8
9
10
(defun task (list)
  (cond ((null list) nil)
        ((listp (car list)) (cons (task (car list)) (task (cdr list))))
        ((symbolp (car list)) (task (cdr list)))
        (t (cons (car list) (task (cdr list)))))) 
 
==> TASK
(task '((1 a) 2 b (((3) (c 4)))))
 
==> ((1) 2 (((3) (4))))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2020, 17:50
Помогаю со студенческими работами здесь

Написать функцию, удаляющую из списка каждый k-ый элемент
В общем есть задачка: Написать функцию, удаляющую из списка каждый k-ый элемент. Так вот,...

Clojure Написать функцию, удаляющую из исходного списка подсписки заданной глубины
Помогите сделать задание, нужно сделать через рекурсию, циклы нельзя использовать

Написать рекурсивную функцию,объединяющую два списка
написать рекурсивную функцию,объединяющую два списка.список задать при вызове функции

Написать рекурсивную функцию, увеличивающую n-й элемент списка на n
Предположим есть список чисел, нужно написать рекурсивную функцию, которая принимает список чисел и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru