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

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

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

Студворк — интернет-сервис помощи студентам
Определите функцию, аргументом которой является одноуровневый список, элементами которого могут быть как числа, так и символьные атомы. Функция должна формировать новый список, состоящий из двух подсписков: в 1-й подсписок включаются числа, во 2-й – все символьные атомы.
Например: (в а 1 3 ы 5 ф ы) ==> ((1 3 5)(в а ы ф ы))
Помогите, пожалуйста. Загвостздка в том, что нельзя использовать функционалы и присвоение!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.03.2020, 21:09
Ответы с готовыми решениями:

Определить рекурсивную функцию
Всем привет, нужна помощь... нужно написать рекурсивную функцию которая для заданного n вернет соответствующее простое число, то есть f(1)...

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

Определить рекурсивную функцию MBR
Доброе утро. Вот такая задача. Определить рекурсивную функцию MBR (от двух аргументов) выбора конкретного члена из списка имен. При...

8
 Аватар для _sg
4709 / 4404 / 380
Регистрация: 12.05.2012
Сообщений: 3,101
24.03.2020, 23:23
Lisp
1
2
3
4
5
6
7
(defun cinderella (w &optional n s &aux (a (car w)))
  (cond ((null w) (list (reverse n) (reverse s)))
        ((numberp a) (cinderella (cdr w) (cons a n) s))
        ((cinderella (cdr w) n (cons a s)))))
 
> (cinderella '(v a 1 3 y 5 f y))
((1 3 5) (V A Y F Y))
Добавлено через 2 минуты
Lisp
1
2
3
4
5
6
7
8
(defun cinderella (w &optional n s &aux (a (car w)))
  (cond ((null w) (list (reverse n) (reverse s)))
        ((numberp a) (cinderella (cdr w) (cons a n) s))
        ((symbolp a) (cinderella (cdr w) n (cons a s)))
        ((cinderella (cdr w) n s))))
 
> (cinderella '(v a "ab" 1 3 y 5 f (6 7) y))
((1 3 5) (V A Y F Y))
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
25.03.2020, 07:15
HomeLisp:
Lisp
1
2
3
4
5
6
7
8
9
10
(defun task (list)
  (let ((a nil)
        (b nil))
     (iter (for x in list) (if (numberp x) (collecting x into a) (collecting x into b)))
     (list a b))) 
 
==> TASK
 
(task '(1 q 2 w 3 4 c v))
==> ((1 2 3 4) (Q W C V))
Добавлено через 1 минуту
Цитата Сообщение от blurryfacebeat Посмотреть сообщение
Загвоздка в том, что нельзя использовать функционалы и присвоение!
- а было бы легче?
1
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 31
25.03.2020, 08:16  [ТС]
Catstail, а как это будет выглядеть на CLisp?
0
 Аватар для _sg
4709 / 4404 / 380
Регистрация: 12.05.2012
Сообщений: 3,101
25.03.2020, 09:04
Цитата Сообщение от blurryfacebeat Посмотреть сообщение
Определить рекурсивную функцию
...

Добавлено через 1 минуту
CLISP
0
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 31
30.03.2020, 15:57  [ТС]
Catstail, преподаватель сказал сделать лабу без дополнительных библиотек. Чистый CLisp. Это ад какой-то
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
30.03.2020, 17:36
blurryfacebeat, так тебе же привели кучу решений выше...

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(defun core (list num-list sym-list)
   (cond ((null list) (list num-list sym-list))
         ((numberp (car list))  (core (cdr list) (cons (car list) num-list) sym-list))
         (t (core (cdr list) num-list (cons (car list) sym-list)))))
 
==> CORE
 
(defun task (list)
  (core list nil nil))
 
==> TASK
 
(task '(1 q w 2 3 x 2))
 
==> ((2 3 2 1) (X W Q))
 
;; А если требуется сохранить порядок - то так:
 
(defun task (list)
  (core (reverse list) nil nil))   ;; reverse - стандартная функция CL, если что...
 
==> TASK
 
(task '(1 q w 2 3 x 2))
==> ((1 2 3 2) (Q W X))
1
0 / 0 / 0
Регистрация: 27.02.2020
Сообщений: 31
30.03.2020, 17:44  [ТС]
Catstail, прошу прощения за невнимательность. Спасибо большое!
0
Заблокирован
03.04.2020, 14:39
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(define (f fn lst)
    (let loop ([lst lst]
               [one empty]
               [two empty]
               [acc_one 0]
               [acc_two 0])
      (if (null? lst)
          (list acc_one one  acc_two two)
          (if (fn (car lst))
              (loop (cdr lst) (cons (car lst) one) two (add1 acc_one) acc_two)
              (loop (cdr lst) one (cons (car lst) two) acc_one (add1 acc_two))))))
 
 
  (f (lambda (x) (number? x)) '(1 a 2 b 3 c 4 d))
 
'(4 (4 3 2 1) 4 (d c b a))
Добавлено через 14 минут
хотя, проще сделать что-то типа такого

Lisp
1
2
3
(defn splitter [fn lst] [(filter #(fn %) lst) (filter #(not (fn %)) lst)])
(splitter number? '(1 a 2 b c 3))
=> [(1 2 3) (a b c)]
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2020, 14:39
Помогаю со студенческими работами здесь

Определить рекурсивную функцию EQLIST
Доброе утро. Вот такая задача. Определить рекурсивную функцию EQLIST, которая возвращает Т, если два списка, состоящие из атомов,...

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

Написать рекурсивную функцию нахождения степени числа
2. Написать рекурсивную функцию нахождения степени числа.

Описать рекурсивную функцию вычисления n-го числа Фибоначчи
Описать рекурсивную функцию вычисления n-го числа Фибоначчи: f0 = 0; f1 = 1; fj = fj-1 + fj-2; j = 2, 3, ... С помощью функции вычислить...

Реализовать рекурсивную функцию вычисления степени из числа
Добрый день , помогите решить задачи : ==================================================================================== ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru