0- 0_Функ.и лог. прог
.docМинистерство образования Российской Федерации
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Заочный факультет
(дистанционная форма обучения)
Кафедра автоматизированных систем управления (АСУ)
Функциональное програмирование
КОНТРОЛЬНАЯ РАБОТА №1
Дата выполнения работы 3.02.2008г.
Дата проверки:
Оценка:
Подпись преподавателя:
Функциональное программирование
Первое контрольное задание
Вариант 6
-
Определите функцию (f a b c), которая вычисляет список корней квадратного уравнения a*x^2+b*x+c=0 (если корней нет, то список пустой).
(defun F (a b c) ((lambda (d) (mapcar '(lambda (sign) (/ (+ (* -1 b) (* sign (sqrt d))) (* 2 a))) '(-1 +1))) (- (* b b) (* 4 a c))))
-
Напишите функцию, аналогичную встроенной функции замены subst в списке s выражение x на y, но производящую взаимную замену x на y, т.е. x->y, y->x.
(defun MUTUAL_SUBST (S x y) (if S ((lambda (elem result) (cons (cond ((equal elem x) y) ((equal elem y) x) (T elem)) result)) (car S) (MUTUAL_SUBST (cdr S) x y))))
-
определите функцию (f s), результатом которой является список, получающийся после удаления на всех уровнях всех положительных элементов списка чисел s.
(defun EXCLUDEPOSITIVE (S) (if S ((lambda (elem result) (if (listp elem) (cons (EXCLUDEPOSITIVE elem) result) (if (plusp elem) result (cons elem result)))) (car S) (EXCLUDEPOSITIVE (cdr S)))))