Лабораторная работа 5 LisP. Лабораторная работа 5. Лабораторная работа 5 Лямбдавыражения и функции пользователя. Рекурсии
Скачать 66.5 Kb.
|
Лабораторная работа 5 Лямбда-выражения и функции пользователя. Рекурсии Вариант1 1. Ответьте письменно на вопросы: 1) Что возвращает функция: ((lambda (x y) (cons x (cons y nil))) ‘a ‘b)? 2) Чему равно значение лямбда-вызова ((lambda (a &optional (b 3) &rest x &key c (d a)) (list a b c d x)) 1 6 :c 7) 2. Напишите функцию пользователя, сравнивающую остатки от деления N чисел х1, x2, …на число k и возвращающая число xi, дающее больший остаток. 3. Напишите рекурсивную функцию для вычисления n-й степени числа а 4. Напишите рекурсивную функцию, проверяющую, что все элементы списка S различны 5. Напишите рекурсивную функцию, которая проверяет, можно ли получить список S из списка P перестановкой его элементов. …………………………………………………………………………………………………………….. Лабораторная работа 5 Лямбда-выражения и функции пользователя. Рекурсии Вариант 2 1. Ответьте письменно на вопросы: 1) Что возвращает функция: ((lambda (x &rest y) (cons x (cdr y)) ) 1 2 3 4 5 )? 2) Задана функция (defan f (a &key (b a) &optional c) (+ a (* b 3) (* c 2)) ). Что получится в результате вызовов функции f: а) ( f 10 1 ) б) (f 2 :b 8 -1 ) в) ( f 1 2 3)? 2. Напишите функцию, вычисляющую модуль вектора v=(х1 x2 … xn) N-мерного пространства. Координаты вектора и размерность пространства оформите как аргументы функции. 3. Напишите рекурсивную функцию для вычисления суммы первых n нечётных натуральных чисел. 4. Напишите рекурсивную функцию, увеличивающую каждый элемент списка на 5. 5. Напишите рекурсивную функцию, находящую поэлементную сумму двух списков …………………………………………………………………………………………………………….. Лабораторная работа 5 Лямбда-выражения и функции пользователя. Рекурсии Вариант 3 1. Ответьте письменно на вопросы: 1) Чему равно значение лямбда-вызова ((lambda (x) (eval (cons x ‘(1 2 3)))) ‘min)? 2) ( defun f ( (x 0) &rest y) ( cons x (cdr y)) ) Что вернет функция f в результате вызовов: (f 1 2 3 4) ( f 1 ) (f max 1 2)? 2. Напишите функцию пользователя f(a, ,n), генерирующую n нормально распределенных случайных чисел с математическим ожиданием а и средним квадратическим отклонением .По умолчанию а=0, =1, n=1. 3. Напишите рекурсивную функцию для нахождения n-го элемента арифметической прогрессии с первым членом a0, и разностью d. 4. Напишите рекурсивную функцию, добавляющую элемент х в конец списка s. 5. Напишите рекурсивную функцию, объединяющую два списка в один. …………………………………………………………………………………………………………….. Лабораторная работа 5 Лямбда-выражения и функции пользователя. Рекурсии Вариант 4 Ответьте письменно на вопросы: 1) Что возвращает функция: ((lambda (x) (list ‘a x)) ((lambda (y) (list y)) ‘b)) ? 2) Задана функция ( defun f(x &key (y x) &rest s ) ( max x y (eval (cons ‘+ s) )) ) Что получится в результате вызовов ( f 10 1 2 3 ) (f 2 :y 8 -1 ) (f 2 :y 0 1 1 1 1 1 1 1)? 2. Напишите функцию пользователя, которая для n чисел х1, x2, …xn находит разность между наибольшим и наименьшим. 3. Напишите рекурсивную функцию для вычисления функции 4. Напишите рекурсивную функцию, которая список (a b c …) превращает в список ((а) (b) (c)…). 5. Напишите рекурсивную функцию, которая из многоуровневого списка получает одноуровневый, вытаскивая все атомы на первый уровень …………………………………………………………………………………………………………. Лабораторная работа 5 Лямбда-выражения и функции пользователя. Рекурсии Вариант 5 1. Ответьте письменно на вопросы: 1)Чему равно значение лямбда-вызова ((lambda (a &optional (b 3) &rest x &key c (d a)) (list a b c d x)) 1) ? Что возвращает функция: ((lambda (x &rest y) (list x (cdr y))) ‘ 1 2 3 4 )? 2. Напишите функцию, которая для n чисел х1, x2, …xn,определяет, сколько из них меньше числа y. 3. Напишите рекурсивную функцию для вычисления n-го элемента геометрической прогрессии с первым членом b0 и знаменателем q. 4. Напишите рекурсивную функцию, дублирующую каждый элемент списка (Т.е. список с1=(в 2 п) превращается в с2=( в в 2 2 п п ) ). 5. Напишие рекурсивную функцию, переворачивающую список задам наперед …………………………………………………………………………………………………………….. Лабораторная работа 5 Лямбда-выражения и функции пользователя. Рекурсии Вариант 6 Ответьте письменно на вопросы: 1) Задана функция (defun f (a &optional (b a) & rest (s (0)) ) (- (* a b) (eval (cons ‘+ s )) ). Что получится в результате вызова этой функции с параметрами: а) (f 3) б) (f 10 5 1 1 2) в) (f 10 10 2 2 2 2 2 2)? 2) Что возвращает функция: ((lambda (x) (list x (+ x 1) (* 2 x )) ) 3)? 2. Напишите функцию f( x, y, m) , возводящую число х в степень у по модулю m (m по умолчанию должно быть равно 1). 3. Напишите рекурсивную функцию для вычисления произведения n первых членов прогрессии 1, 4, 7, 10… 4. Напишите рекурсивную функцию, переводящую одноуровневый список вида (а б .. ю я) в список (а(б(…(ю(я))…)). Лабораторная работа 5 Лямбда-выражения и функции пользователя. Рекурсии Вариант 7 Ответьте письменно на вопросы: 1) Что возвращает функция: ((lambda (x) (list ‘a x)) ((lambda (y) (list y)) ‘b))? 2) (defun f(&key (x 2) y) (/ (+ x y) (* x y)))) Что получится в результате вызова функции (f :y 2) (f 1 ) (f :x 4 :y 2)? 2. Напишите функцию, которая для чисел х1, x2… xn определяет, каких больше – чётных или нечётных. 3. Напишите рекурсивную функцию f(c, n) , которая вычисляет n-ю частичную сумму ряда . 4. Напишите рекурсивную функцию, заменяющую все четные элементы числового спика нулем 5. Напишите рекурсивную функцию, которая из числового списка S строит новый список из разностей соседних элементов. …………………………………………………………………………………………………………….. Лабораторная работа 5 Лямбда-выражения и функции пользователя. Рекурсии Вариант 8 1. Ответьте письменно на вопросы: 1) Что возвращает функция: ((lambda ( х &rest y) (eval (cons x y)) ) gcd 4 6 16 ) 2) Задана функция: (defun f (x &optional (y x) &rest (z ‘(2)) ) ( + x y (car z)) ) Что получится в результате вызовов функции а) (f 3 ) б) (f 1 2 3) в) (f 0 1 3 4 2)? 2. Напишите функцию, которая находит позицию наибольшего элемента в списке. 3. Напишите рекурсивную функцию, вычисляющую цифровой корень числа х. 4. Напишите рекурсивную функцию, которая дублирует каждый элемент списка: ( а б в г…) превращается в (а а б б в в г г …) 5. Напишите рекурсивную функцию, которая находит пересечение двух списков: т.е. строит список из элементов, встречающихся в обоих. …………………………………………………………………………………………………………….. Лабораторная работа 5 Лямбда-выражения и функции пользователя. Рекурсии Вариант 9 1. Ответьте письменно на вопросы: 1) Что возвращает функция: (caaar ((lambda (x) (list x)) ((lambda (x) (list x)) (list nil))))? 2) Задана функция (defun f ( ( x 10) &rest y ) (eval (cons ‘- (cons x y))) ) Что получится в результате вызовов функции (defun f ( ( x 10) &rest y ) (eval (cons ‘- (cons x y))) ) а) (f ) б) (f 2 3 4) в) (f 100 1 2 3 4 5)? 2. Напишите функцию, которая вычисляет скалярное произведение двух векторов n-мерного пространства. 3. Напишите рекурсивную функцию, которая между каждой парой элементов списка вставляет число 0. 4. Напишите рекурсивную функцию, которая возводит в квадрат каждый элемент списка 5. Напишите рекурсивную функцию, которая для двух списков S и P находит все элементы, встречающиеся в S но отсутствующие в Р Лабораторная работа 5 Лямбда-выражения и функции пользователя. Рекурсии Вариант 10 1. Ответьте письменно на вопросы: 1) Что возвращает функция: ((lambda (x) (eval (cons x ‘(1 2 3)))) ‘max)? 2) (defun f( x &optional (y 0) (z y) ) ( + (* х х) (* y y ) z ) ) что получится в результате вызовов функции: a) (f 2) b) ( f 5 1 1) c) (f 1 2 3)? 2. Напишите функцию, проверяющую, является ли число Х простым. 3. Напишите рекурсивную функцию для вычисления суммы n первых членов прогрессии 1, 2, 4, 8, 16… 4. Напишите рекурсивную функцию для вычисления суммы двух векторов n-мерного пространства. Векторы и их сумму представить списками одинаковой длины n. 5. Напишите рекурсивную функцию. которая для двух списков одинаковой длины производит попарное сравнение элементов. Результаты выводятся в новый список. …………………………………………………………………………………………………………….. Вариант11 1. Ответьте письменно на вопросы: 1) Что возвращает функция: ((lambda (x y) (cons x (cons y nil))) ‘a ‘b)? 2) Чему равно значение лямбда-вызова ((lambda (a &optional (b 3) &rest x &key c (d a)) (list a b c d x)) 1 6 :c 7) 2.Напишите функцию, которая находит все делители числа х и строит из них список 3. Напишите рекурсивную функцию, которая строит список вида (хn…x2 x). х и n – аргументы функции. 4. Напишите рекурсивную функцию, которая удаляет из списка элементы, равный х.х вводит пользователь 5. Напишите рекурсивную функцию, которая проверяет, является ли список S частью списка P …………………………………………………………………………………………………………….. Вариант 12 Ответьте письменно на вопросы: 1) Что возвращает функция: (caaar ((lambda (x) (list x)) ((lambda (x) (list x)) (list nil))))? 2) Задана функция (defun f ( ( x 10) &rest y ) (eval (cons ‘- (cons x y))) ) Что получится в результате вызовов функции: (defun f ( ( x 10) &rest y ) (eval (cons ‘- (cons x y))) ) а) (f ) б) (f 2 3 4) в) (f 100 1 2 3 4 5)? 2. Напишите функцию которая создаёт список из к случайных чисел (rand n), распределённых в диапазоне от а до b (по умолчанию a = 0, b=100). 3 Напишите рекурсивную функцию, которая на основе двух списков х1 и х2 строит список из произведений их элементов 4. Напишите рекурсивную функцию, которая возводит в квадрат каждый элемент списка 5. Напишите рекурсивную функцию, находящую поэлементное произведение двух списков |