Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
1

Заменить каждый второй элемент списка на 0,используя только рекурсию, CAR, CDR, CONS,COND

13.12.2013, 11:07. Показов 1037. Ответов 5
Метки нет (Все метки)

Заменить каждый второй элемент списка на 0,используя только рекурсию, CAR, CDR, CONS,COND
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2013, 11:07
Ответы с готовыми решениями:

каждый нечетный элемент списка умножить на 2, каждый четный на 3. использовать только рекурсию CAR,CDR,COND,CONS
каждый нечетный элемент списка умножить на 2, каждый четный на 3. использовать только рекурсию ...

Работа со списками в LISP, используя базовые функции CAR, CDR, CONS
Дан список ( (A B ( C ) ) (D (E) (K L M))) получить: список (C) список (A B C D) ...

Используя комбинацию CAR и CDR, выбрать из списка ((HEIGHT 72) (WEIGHT 175) (HAIR BLOND)) элемент 175 2
Доброе утро. Помогите с решением вот такой вот задачи 1. Используя комбинацию CAR и CDR, выбрать...

Композицией базовых функций CAR, CDR, CONS, LIST
Добрый день! прошу помочь в решении задачи: Композицией базовых функций CAR, CDR, CONS, LIST...

5
Модератор
Эксперт Python
28974 / 15768 / 3133
Регистрация: 12.02.2012
Сообщений: 25,905
Записей в блоге: 4
13.12.2013, 11:12 2
Lisp
1
2
3
4
5
6
7
8
9
10
(defun task (lst &optional n)
  (cond ((null lst) nil)
        (n (cons 0 (task (cdr lst) nil)))
        (t (cons (car lst) (task (cdr lst) t))))) 
 
==> task
 
(task '(a b c d e f))
 
==> (a 0 c 0 e 0)
2
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
13.12.2013, 11:17  [ТС] 3
спасибо, а можно пару вопросов?

(cond ((null lst) nil)- эта строка означает, что если список пустой выдать nil, верно?

(n (cons 0 (task (cdr lst) nil)))
(t (cons (car lst) (task (cdr lst) t))))) - вот эти две не очень понятны.

car- функция, которая возвращает только 1-й элемент списка. а вот cdr все, кроме 1.
cons - создает новый список?
0
Модератор
Эксперт Python
28974 / 15768 / 3133
Регистрация: 12.02.2012
Сообщений: 25,905
Записей в блоге: 4
13.12.2013, 11:22 4
Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
(cond ((null lst) nil)- эта строка означает, что если список пустой выдать nil, верно?
- да

Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
car- функция, которая возвращает только 1-й элемент списка. а вот cdr все, кроме 1.
- да

Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
cons - создает новый список?
- не совсем. cons присоединяет первый аргумент к списку, заданному вторым. (На самом деле и это - но совсем так, но тебе можно не заморачиваться)

Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
(n (cons 0 (task (cdr lst) nil)))
(t (cons (car lst) (task (cdr lst) t))))) - вот эти две не очень понятны.
Lisp
1
2
(n (cons 0 (task (cdr lst) nil))) ;; если параметр n не есть Nil - значит элемент второй. Присоединяем 0
(t (cons (car lst) (task (cdr lst) t))))) ;; иначе оставляем car (т.е. очередной).
0
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
14.12.2013, 10:30  [ТС] 5
а что такое &optional n?
0
Модератор
Эксперт Python
28974 / 15768 / 3133
Регистрация: 12.02.2012
Сообщений: 25,905
Записей в блоге: 4
14.12.2013, 15:21 6
Необязательный параметр, имеющий по умолчанию значение Nil
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2013, 15:21

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Clojure Реализация ф-ций CONS, CAR, CDR (Sheme,CLisp)
В книге SICP описан алгоритм реализации функций CONS,CAR,CDR на языке Sheme define (cons x y)...

Lisp. По какому принципу работают функции CAR,CDR,CONS?
Здравствуйте! Помогите пожалуйста понять как работают функции CAR,CDR,CONS. Например, есть список:...

Получить из исходного списка (A ((B) (C)) (D) (K) L) элемент списков (A B C) (A (D) (C)) (D A B) используя функцию cons
Здравствуйте Помогите пожалуйста с задачей: Получить из исходного списка (A ((B) (C)) (D) ...

Разбор списка с помощью CAR, CDR и их комбинаций
Еще одна задачка поставила меня в тупик: Используя функции CAR, CDR и EQL, проверьте, равен ли...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.