Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 25
1

простые рекурсивные функции для обработки списков

27.12.2012, 16:59. Показов 2163. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
определить рекурсивные функции в соответствии с номером варианта.
В данном задании все операции над списками выполняются только с элементами верхнего уровня, хотя списки могут содержать подсписки.
Рекурсия выполняется только в направлении CDR списка.
а) (SET1 x) удаляет из списка x повторяющиеся элементы на верхнем уровне. Например:
> (SET1 '((a b) c d (a b) c e))
(D (A B) C E)

б) (sum3 n m x) суммирует элементы одноуровнего числового списка x, расположенные на позициях от n до m включительно (n<m).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2012, 16:59
Ответы с готовыми решениями:

Простые рекурсивные функции
Запуталась в решении задачи.... (TEN n x) выдает число в десятичной системе счисления, образованное...

простые рекурсивные функции
(defun ydalit (a w) (cond ((null w) nil) ((equal a (car w)) (cons (car w) (cdr w))) ((ydalit a...

Простые функции для обработки массива
Учил Python. с++ никогда не занимался. Сейчас выхожу с больничного, выясняется что на завтра нужно...

Рекурсия для обработки списков
Написать функцию, возвращающую для заданного списка lst список вида ((атом1 &lt;число вхождений в...

2
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
27.12.2012, 17:40 2
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun -member (a w)
    (cond ((null w) nil)
    ((equalp a (car w)) (cons (car w) (cdr w)))
    ((-member a (cdr w)))))
 
(defun sine-twins (w)
  (cond ((null w) nil)
        ((-member (car w) (cdr w)) (sine-twins (cdr w)))
        ((cons (car w) (sine-twins (cdr w))))))
 
> (sine-twins '((a b) c d (a b) c e))
(D (A B) C E)
Добавлено через 4 минуты
Lisp
1
2
3
4
5
(defun sum-sequence (n m w)
  (reduce #'+ (subseq w n (1+ m))))
 
> (sum-sequence 3 5 '(1 2 3 4 5 6 7))
15
Добавлено через 1 минуту
или:
Lisp
1
2
3
4
5
(defun sum-sequence (n m w)
  (reduce #'+ (subseq w (1- n) m)))
 
> (sum-sequence 3 5 '(1 2 3 4 5 6 7))
12
Добавлено через 16 минут
Lisp
1
2
3
4
5
6
7
(defun sum-sequence (w n m)
  (cond ((= m 0) 0)
        ((= n 1) (+ (car w) (sum-sequence (cdr w) n (1- m))))
        ((sum-sequence (cdr w) (1- n) (1- m)))))
 
> (sum-sequence '(1 2 3 4 5 6 7) 3 5)
12
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,641
Записей в блоге: 13
28.12.2012, 10:23 3
1)

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun del-dup (lst &optional r f)
  (cond ((null f) (del-dup (reverse lst) nil t))
        ((null lst) r)
        ((not (member (car lst) r)) (del-dup (cdr lst) (cons (car lst) r) t))
        (t (del-dup (cdr lst)  r t))))
 
  
 
==> del-dup
 
(del-dup '((a b) c d (a b) c e))
 
==> (d (a b) c e)
Добавлено через 9 минут
2)
Lisp
1
2
3
4
5
6
7
8
9
(defun sum3 (n m lst)
  (let ((c 0))
       (apply '+ (mapcar #'(lambda (x) (setq c (+ 1 c)) (if (and (>= c n) (<= c m)) x 0) ) lst))))
 
==> sum3
 
(sum3 3 5 '(1 2 3 4 5 6 7))
 
==> 12
0
28.12.2012, 10:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2012, 10:23
Помогаю со студенческими работами здесь

Применение рекурсии для обработки списков
1) Сложить два списка следующим образом: a1+bn, a2+bn-1, ...,an-1+b2, an+b1. 2) Все вхождения...

Применение рекурсии для обработки списков
6) Выведите максимальный элемент.

Применение рекурсии для обработки списков
Замените голову списка.

Применение рекурсии для обработки списков
Все вхождения заданного элемента уменьшите на заданное число.не работает! в чем ошибка?...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru