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

Добрый день! Не могу сделать несколько заданий из лабораторной работы по LISP на тему "Рекурсия"!

13.11.2013, 11:45. Показов 1494. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Заранее спасибо!

1)
Дана функция
>(defun deriv (f var)
(cond ((and (atom f)
(equal f var)) 1)
((atom f) 0)
((eq (first f) ‘+)
(list ‘+
(derive (nth 1 f) var)
(derive (nth 2 f) var)))))
Требуется определить назначение функции и привести результаты
ее применения.

2)
Дана функция
>(defun mystery (x)
(cond ((null x) 1)
((atom x) 0)
(t (max (+ (mystery (car x)) 1)
(mystery (cdr x)))))
Требуется определить назначение функции и привести результаты
ее применения.

3)
Определить функцию LEGALP, которая возвращает true, если в ка-
честве аргумента выступает правильное арифметическое выраже-
ние. Например,
>(LEGALP 4)
T
>(LEGALP ‘((2*2)-3))
T
>(LEGALP NIL)
NIL
>(LEGALP ‘(A B C D))
NIL
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2013, 11:45
Ответы с готовыми решениями:

Добрый день , не могу понять почему не работает system("clr")?
#include<iostream> #include<string> // getline #include<cstdlib> // system using namespace std;...

Несколько заданий из лабораторной работы
это мою защитная работа где именно ошибки ЛАБОРАТОРНАЯ РАБОТА № 4. ОДНОМЕРНЫЕ МАССИВЫ...

Нужно введение и заключение для работы на тему "Рекурсия"
По идее во введении надо писать, почему я взяла эту тему. Но я просто захотела, и взяла... Что...

Решение заданий типа "Array","Matrix","String","File","Text"""
большая просьба помочь решить где-то около 35-40 (из 100) задач (мне не понятных) типа массив и...

10
Модератор
Эксперт функциональных языков программированияЭксперт Python
35616 / 19509 / 4079
Регистрация: 12.02.2012
Сообщений: 32,552
Записей в блоге: 13
13.11.2013, 12:11 2
Цитата Сообщение от konstant Посмотреть сообщение
Не могу сделать несколько заданий
- а теги расставить можешь?
0
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 18
13.11.2013, 12:16  [ТС] 3
Цитата Сообщение от Catstail Посмотреть сообщение
- а теги расставить можешь?
Объясните что вы имеете ввиду! К сожаления не понимаю что такое "Теги".
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
35616 / 19509 / 4079
Регистрация: 12.02.2012
Сообщений: 32,552
Записей в блоге: 13
13.11.2013, 12:17 4
1) это небрежно написанная функция примитивного символьного дифференцирования суммы:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun deriv (f var)
   (cond ((and (atom f) (equal f var)) 1)
         ((atom f) 0)
         ((eq (car f) '+)
              (list '+
                    (deriv (nth 1 f) var)
                    (deriv (nth 2 f) var)))))
 
==> deriv
 
(deriv '(+ x (+ x 1)) 'x)
 
==> (+ 1 (+ 1 0))
 
(deriv 5 'x)
 
==> 0
 
(deriv 'x 'x)
 
==> 1
0
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 18
13.11.2013, 12:19  [ТС] 5
Цитата Сообщение от Catstail Посмотреть сообщение
1) это небрежно написанная функция примитивного символьного дифференцирования суммы:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun deriv (f var)
   (cond ((and (atom f) (equal f var)) 1)
         ((atom f) 0)
         ((eq (car f) '+)
              (list '+
                    (deriv (nth 1 f) var)
                    (deriv (nth 2 f) var)))))
 
==> deriv
 
(deriv '(+ x (+ x 1)) 'x)
 
==> (+ 1 (+ 1 0))
 
(deriv 5 'x)
 
==> 0
 
(deriv 'x 'x)
 
==> 1
Не могли бы вы простыми словами объяснить, что делает эта функция?!
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
35616 / 19509 / 4079
Регистрация: 12.02.2012
Сообщений: 32,552
Записей в блоге: 13
13.11.2013, 12:22 6
2) У записи не хватает скобки... Ты уверен, что верно записал определение? Эта mystery для всех списков тупо возвращает 1:

Lisp
1
2
3
4
5
6
7
8
9
(defun mystery (x)
   (cond ((null x) 1)
         ((atom x) 0)
         (t (max (+ (mystery (car x)) 1)
                    (mystery (cdr x))))))
 
(mystery '(-1 -1 -1))
 
==> 1
1
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 18
13.11.2013, 12:24  [ТС] 7
Цитата Сообщение от Catstail Посмотреть сообщение
2) У записи не хватает скобки... Ты уверен, что верно записал определение? Эта mystery для всех списков тупо возвращает 1:

Lisp
1
2
3
4
5
6
7
8
9
(defun mystery (x)
   (cond ((null x) 1)
         ((atom x) 0)
         (t (max (+ (mystery (car x)) 1)
                    (mystery (cdr x))))))
 
(mystery '(-1 -1 -1))
 
==> 1
ну должно быть все верно, это задание из учебника
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
35616 / 19509 / 4079
Регистрация: 12.02.2012
Сообщений: 32,552
Записей в блоге: 13
13.11.2013, 12:25 8
Lisp
1
2
3
4
5
6
7
(defun deriv (f var)
   (cond ((and (atom f) (equal f var)) 1) ;; если f совпадает с переменной, то производная =1
         ((atom f) 0)                             ;; производная константы = 0
         ((eq (car f) '+)    ;; производная суммы
              (list '+  ;; равна сумме
                    (deriv (nth 1 f) var)  ;; производной первого слагаемого
                    (deriv (nth 2 f) var))))) ;; и производной второго слагаемого
Добавлено через 24 секунды
Цитата Сообщение от konstant Посмотреть сообщение
это задание из учебника
- из какого?
0
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 18
13.11.2013, 12:32  [ТС] 9
Цитата Сообщение от Catstail Посмотреть сообщение
Lisp
1
2
3
4
5
6
7
(defun deriv (f var)
   (cond ((and (atom f) (equal f var)) 1) ;; если f совпадает с переменной, то производная =1
         ((atom f) 0)                             ;; производная константы = 0
         ((eq (car f) '+)    ;; производная суммы
              (list '+  ;; равна сумме
                    (deriv (nth 1 f) var)  ;; производной первого слагаемого
                    (deriv (nth 2 f) var))))) ;; и производной второго слагаемого
Добавлено через 24 секунды
- из какого?
Спасибо большое, теперь понятно !

Добавлено через 1 минуту
Цитата Сообщение от Catstail Посмотреть сообщение
Lisp
1
2
3
4
5
6
7
(defun deriv (f var)
   (cond ((and (atom f) (equal f var)) 1) ;; если f совпадает с переменной, то производная =1
         ((atom f) 0)                             ;; производная константы = 0
         ((eq (car f) '+)    ;; производная суммы
              (list '+  ;; равна сумме
                    (deriv (nth 1 f) var)  ;; производной первого слагаемого
                    (deriv (nth 2 f) var))))) ;; и производной второго слагаемого
Добавлено через 24 секунды
- из какого?
ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ,Лабораторный практикум C.Е. ЧЕСНОКОВ
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
35616 / 19509 / 4079
Регистрация: 12.02.2012
Сообщений: 32,552
Записей в блоге: 13
13.11.2013, 12:39 10
3) Что-то вроде:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun legalp (v)
  (cond ((null v) t)
        ((numberp v) t)
        ((and (numberp (car v)) (null (cdr v))) t)
        ((and (numberp (car v)) (member (cadr v) '(+ - * /))) (legalp (cddr v)))
        ((and (listp (car v)) (member (cadr v) '(+ - * /))) (and (legalp (car v)) (legalp (cddr v))))))
 
==> legalp
 
(LEGALP '((2 * 2) - 3))
 
==> T
 
(LEGALP 5)
 
==> T
 
(LEGALP '(a b c))
 
==> NIL
1
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 18
13.11.2013, 12:51  [ТС] 11
Цитата Сообщение от Catstail Посмотреть сообщение
3) Что-то вроде:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun legalp (v)
  (cond ((null v) t)
        ((numberp v) t)
        ((and (numberp (car v)) (null (cdr v))) t)
        ((and (numberp (car v)) (member (cadr v) '(+ - * /))) (legalp (cddr v)))
        ((and (listp (car v)) (member (cadr v) '(+ - * /))) (and (legalp (car v)) (legalp (cddr v))))))
 
==> legalp
 
(LEGALP '((2 * 2) - 3))
 
==> T
 
(LEGALP 5)
 
==> T
 
(LEGALP '(a b c))
 
==> NIL
Спасибо, век вас не забуду)

Добавлено через 1 минуту
Цитата Сообщение от Catstail Посмотреть сообщение
3) Что-то вроде:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun legalp (v)
  (cond ((null v) t)
        ((numberp v) t)
        ((and (numberp (car v)) (null (cdr v))) t)
        ((and (numberp (car v)) (member (cadr v) '(+ - * /))) (legalp (cddr v)))
        ((and (listp (car v)) (member (cadr v) '(+ - * /))) (and (legalp (car v)) (legalp (cddr v))))))
 
==> legalp
 
(LEGALP '((2 * 2) - 3))
 
==> T
 
(LEGALP 5)
 
==> T
 
(LEGALP '(a b c))
 
==> NIL
Спасибо, не знаю как и отблагодарить вас)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2013, 12:51
Помогаю со студенческими работами здесь

Реализация класса и решения для лабораторной работы "Денежная сумма"
Доброе время суток. В универе задали лабу помогите плз сдавать уже подходит время, а самому долго...

Добрый день, уже несколько дней не могу понять простую задачу, не понимаю в чем проблема, подскажите как подправить код
Задание: Дан двумерный массив. Для каждой строки, начинающейся с четного элемента, подсчитать...


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

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

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