Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
 Аватар для ДимКо
4 / 4 / 2
Регистрация: 26.10.2012
Сообщений: 154

Используя функцию DEFUN, определить функцию

09.06.2013, 18:22. Показов 1292. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Используя функцию DEFUN, определить функцию f (a x), где a – S-
выражение, а x - список, состоящий из 2-3 элементов которая уменьшает элементы списка х на единицу, если число а является элементом списка х, и возвращает исходный список х в противном случае (х содержит 3 числовых атома).

Нельзя использовать функцию mapcap

Добавлено через 8 минут
При решении необходимо использовать функции как в этом примере.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CL-USER 1 > 
(defun g(a b x)
  (cond ((eql a b) x)
    (t (cons b x))))
G
 
CL-USER 2 > 
(defun f(a x)
  (cond ((atom a)               
    (g a (car x)                
      (g a (cadr x)            
        (g a (caddr x) nil))))  
    (t x)))                     
F
 
CL-USER 3 > 
(f 'a '(a b a))             
(B)                          
 
CL-USER 4 > 
(f'(a b) '((a b) d a))           
((A B) D A)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.06.2013, 18:22
Ответы с готовыми решениями:

Используя функцию DEFUN, определить функцию f (a x)
Используя функцию DEFUN, определить функцию f (a x), где a - s-выражение, a x –список, состоящий из 2-3 элементов, которая удаляет из...

Используя функцию DEFUN, определить функцию
Используя функцию DEFUN, определить функцию f (a x), где a – S- выражение, а x - список, состоящий из 2-3 элементов которая уменьшает...

Используя функцию DEFUN, определить функцию f (a x)
Используя функцию DEFUN, определить функцию f (a x), где a – S- выражение, а x - список, состоящий из 2-3 элементов которая заменяет на a...

11
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38190 / 21125 / 4307
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
09.06.2013, 19:15
Цитата Сообщение от ДимКо Посмотреть сообщение
Нельзя использовать функцию mapcap
- это особенно прикололо! А вообще ты выкладываешь эту задачу уже второй раз.
0
 Аватар для ДимКо
4 / 4 / 2
Регистрация: 26.10.2012
Сообщений: 154
09.06.2013, 19:19  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- это особенно прикололо! А вообще ты выкладываешь эту задачу уже второй раз.
Просто Вы прошлой теме задачу в примере решили, как я понял. А мне нужна вот эта задача:
Используя функцию DEFUN, определить функцию f (a x), где a – S-
выражение, а x - список, состоящий из 2-3 элементов которая уменьшает элементы списка х на единицу, если число а является элементом списка х, и возвращает исходный список х в противном случае (х содержит 3 числовых атома).

Просто функции должны быть как в примере.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38190 / 21125 / 4307
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
09.06.2013, 19:46
Так пример работает... Что же еще нужно?
0
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
09.06.2013, 19:47
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun g (a x)
  (if (member a x) (f x) x))
 
(defun f (x)
  (let ((i x))
    (loop (if (null x) (return i))
          (setf x (cdr (rplaca x (1- (car x))))))))
 
> (g 2 '(1 2 3))
(0 1 2)
 
> (g 4 '(1 2 3))
(1 2 3)
2
 Аватар для ДимКо
4 / 4 / 2
Регистрация: 26.10.2012
Сообщений: 154
09.06.2013, 19:58  [ТС]
Цитата Сообщение от Lambdik Посмотреть сообщение
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun g (a x)
  (if (member a x) (f x) x))
 
(defun f (x)
  (let ((i x))
    (loop (if (null x) (return i))
          (setf x (cdr (rplaca x (1- (car x))))))))
 
> (g 2 '(1 2 3))
(0 1 2)
 
> (g 4 '(1 2 3))
(1 2 3)
спасибо, но мне нужно решение с простыми функциями как в примере (atom, car, caddr, cons и т.д. ):
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CL-USER 1 > 
(defun g(a b x)
  (cond ((eql a b) x)
    (t (cons b x))))
G
 
CL-USER 2 > 
(defun f(a x)
  (cond ((atom a)               
    (g a (car x)                
      (g a (cadr x)            
        (g a (caddr x) nil))))  
    (t x)))                     
F
 
CL-USER 3 > 
(f 'a '(a b a))             
(B)                          
 
CL-USER 4 > 
(f'(a b) '((a b) d a))           
((A B) D A)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38190 / 21125 / 4307
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
09.06.2013, 20:09
То, что ты приводишь в примере, и есть решение задачи. Или я ошибаюсь?
0
 Аватар для ДимКо
4 / 4 / 2
Регистрация: 26.10.2012
Сообщений: 154
09.06.2013, 20:42  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
То, что ты приводишь в примере, и есть решение задачи. Или я ошибаюсь?
В примере нужно определить функцию f(a,x), где a - S-выражение, x список, состоящий из 3 элементов, которая удаляет из x все элементы, равные a, если a - атом, и не изменяет список x в противном случае.

Я этот пример написал лишь чтобы показать функции, которые нужно использовать в моей задаче
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38190 / 21125 / 4307
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
09.06.2013, 21:00
1001-я попытка:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun del-atom (a x)
  (cond ((null x) nil)
        ((eq a (car x)) (del-atom a (cdr x)))
        (t (cons (car x) (del-atom a (cdr x))))))
  
==> del-atom
 
(defun f (a x)
  (cond ((atom a) (del-atom a x))
        (t x)))  
 
==> f
 
(f 'a '(a b a))
 
==> (b)
 
(f '(a b) '((a b) (a d)))
 
==> ((a b) (a d))
Ответ сходится. Пойдет?
1
 Аватар для ДимКо
4 / 4 / 2
Регистрация: 26.10.2012
Сообщений: 154
09.06.2013, 21:14  [ТС]
Catstail, да, спасибо большое

Добавлено через 3 минуты
Catstail, хотя нет)) я уже сам запутался)) вы задание из примера снова решили)

Добавлено через 5 минут
Lambdik, сделал правильно, только использовал сложные функции для этого задания. нужны простые, такие как: atom, car, caddr, cons и др, т.е. те функции которые есть в этом злосчастном примере:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CL-USER 1 > 
(defun g(a b x)
  (cond ((eql a b) x)
    (t (cons b x))))
G
 
CL-USER 2 > 
(defun f(a x)
  (cond ((atom a)               
    (g a (car x)                
      (g a (cadr x)            
        (g a (caddr x) nil))))  
    (t x)))                     
F
 
CL-USER 3 > 
(f 'a '(a b a))             
(B)                          
 
CL-USER 4 > 
(f'(a b) '((a b) d a))           
((A B) D A)
Добавлено через 1 минуту
Вот это задание мне нужно:
Используя функцию DEFUN, определить функцию f (a x), где a – S-
выражение, а x - список, состоящий из 2-3 элементов которая уменьшает элементы списка х на единицу, если число а является элементом списка х, и возвращает исходный список х в противном случае (х содержит 3 числовых атома).
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38190 / 21125 / 4307
Регистрация: 12.02.2012
Сообщений: 34,732
Записей в блоге: 14
09.06.2013, 21:47
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
26
(defun is-in-list (a x)
  (cond ((null x) nil)
        ((= a (car x)) t)
        (t (is-in-list a (cdr x)))))
 
==> is-in-list
 
(defun dec-list (lst)
  (cond ((null lst) nil)
        (t (cons (- (car lst) 1) (dec-list (cdr lst))))))
 
==> dec-list
 
(defun f (a x)
  (cond ((is-in-list a x) (dec-list x))
        (t x)))
 
==> f
 
(f 1 '(1 2 3))
 
==> (0 1 2)
 
(f 5 '(1 2 3))
 
==> (1 2 3)
2
 Аватар для ДимКо
4 / 4 / 2
Регистрация: 26.10.2012
Сообщений: 154
09.06.2013, 21:49  [ТС]
Catstail, благодарю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.06.2013, 21:49
Помогаю со студенческими работами здесь

Используя функцию DEFUN, определить функцию f (a x)
Используя функцию DEFUN, определить функцию f (a x), где a - s-выражение, a x –список, состоящий из 2-3 элементов, которая подсчитывает...

Используя функцию DEFUN, определить фукцию f (a x)
Используя функцию DEFUN, определить фукцию f (a x), где а - S - выражение, а x - список, состоящий из 2-3 элементов. вариант: заменяет...

Сравнить студентов, используя функцию COND
доброе время суток срочно нужно решить две задчаи - с лабораторной все решила кроме последних двух и голова вообще уже не варит ( буду...

Используя рекурсию написать функцию обработки списка
Доброго времени суток. Есть задача: Применяя рекурсию создать функцию, которая при заданном списке list и некотором числе k удалит все...

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
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