Главная / Программирование /
Основы функционального программирования / Тест 6
Основы функционального программирования - тест 6
Упражнение 1:
Номер 1
Отметьте определение функции, дающей в результате список из единиц?
Ответ:
 (1) (defun LN (L) (cond ((null L)Nil) (T (Cons 1 (LN (cdr L)))) ))
 
 (2) (defun LN (L) (cond ((null L)Nil) (T (Cons 1 (LN (cdr L)))) ) L)
 
 (3) (defun LN (L) (cond ((null L)Nil) (T (Cons L (LN (cdr L)))) ))
 
Номер 2
Какое из определений функций дает в результате список из единиц?
Ответ:
 (1) (defun LN (L) (cond ((null L)Nil) (T (Cons 1 (LN (cdr L)))) ) L)
 
 (2) (defun LN (L) (cond ((EQ L NIL)L) (T (Cons 1 (LN (cdr L)))) ))
 
 (3) (defun LN (L) (cond ((null L)Nil) (T (Cons L (LN (cdr L)))) ))
 
Номер 3
Выберите определение функции, чтобы получить список из единиц такой же длины как аргумент:
Ответ:
 (1) (defun LN (L) (cond ((null L)Nil) (T (Cons 1 (LN (cdr L)))) ) L)
 
 (2) (defun LN (L) (cond (L (Cons 1 (LN (cdr L)))) (1 L) ))
 
 (3) (defun LN (L) (cond ((null L)Nil) (T (Cons L (LN (cdr L)))) ))
 
Упражнение 2:
Номер 1
Какая из форм построит список уникальных чисел (использовать определение объединения из лекции)?
Ответ:
 (1) (union '(1 2 3 1 2 3) Nil)
 
 (2) (union Nil '(1 2 3 1 2 3))
 
 (3) (union '(1 2 3) '(1 2 3 2))
 
Номер 2
Какая из форм поможет избавиться от совпадений чисел в аргументах (использовать определение объединения из лекции)?
Ответ:
 (1) (union '(1 2 3 ) Nil)
 
 (2) (union Nil '(1 2 3 1 2 3))
 
 (3) (union '(1 2 3 4) '(1 2 3 5))
 
Номер 3
Какая из форм не убирает повторы в списках (использовать определение объединения из лекции)?
Ответ:
 (1) (union '(1 2 3 1 2 3) Nil)
 
 (2) (union Nil '(1 2 3 1 2 3))
 
 (3) (union '(1 2 3) '(1 2 3))
 
 (4) (union '(1 2 3 ) NIL )
 
Упражнение 3:
Номер 1
Какая форма последовательно вычислит выражения e1 e2 e3
, а потом выдаст значение e1
из них как результат?
Ответ:
 (1) (prog (x y ...) (setq x e1) e2 e3 (return x) )
 
 (2) ((lambda (a1 a2 a3) a1 (list a2 aN )) e1 e2 e3)
 
 (3) (let ((a1 e1)(a2 e2) (a3 e3)) a1 a2)
 
Номер 2
Какая форма последовательно последовательно вычислит выражения e1 e2 3
, а потом выдаст значение e1
результат?
Ответ:
 (1) (prog (x) (setq x e1) e2 e3 (print x))
 
 (2) ((lambda (a1 a2 a3) a1) e1 e2 e3)
 
 (3) (let ((a1 e1) (a2 e2) (a3 e3)) (quote e1)
 
Номер 3
Отметьте вариант, в котором последовательно будут вычислены выражения e1 e2 e3
, а потом выдаст значение e1
как результат?
Ответ:
 (1) (prog (x) (setq x e1) e2 e3 (print x))
 
 (2) ((lambda (a) a) (list e1 e2 e3))
 
 (3) (car (list e1 e2 e3))
 
 (4) (let ( (a2 e2) (a3 e3)) e1)
 
Номер 4
В каком случае указанная форма последовательно вычислит ряд выражений e1 e2 e3
, а потом выдаст значение e1
как результат?
Ответ:
 (1) (prog (x y) e1 e2 e3 (return e1) )
 
 (2) ((lambda (a1 a2 a3) e1) e2 e3)
 
 (3) (let ((a1 e1)(a2 e2) (a3 e3)) a1)
 
Упражнение 4:
Номер 1
Какая из форм выдает то же значение, что и (cons y (cdr x))
?
Ответ:
 (1) (rplaca x y)
 
 (2) (cons x (cdr y))
 
 (3) (rplacd x y)
 
Номер 2
Какое из выражений формально имеет то же значение, что и (rplaca x y)
?
Ответ:
 (1) (cons y (cdr x))
 
 (2) (cons x (cdr y))
 
 (3) (rplacd x y)
 
Номер 3
Какая из форм равнозначна (cons (car x) y)
?
Ответ:
 (1) (rplacd x y)
 
 (2) (rplaca x y)
 
 (3) (cons x (cdr y))
 
Упражнение 5:
Номер 1
Какая из форм имеет значение (3 . 3)
?
Ответ:
 (1) (cons (+ 1 2)(+ 1 2))
 
 (2) (let ((x (+ 1 2))) (cons x x) x)
 
 (3) (prog (x)(setq x (+ 1 2)) (print (cons x x)))
 
Номер 2
Какая из форм выведет значение (3 . 3)
на экран?
Ответ:
 (1) (cons (+ 1 2)(+ 1 2))
 
 (2) ((lambda (x)(cons x x))(+ 1 2))
 
 (3) (prog (x)(setq x (+ 1 2)) (return (cons x x)))
 
 (4) (prog (x)(setq x (+ 1 2)) (print (cons x x)))
 
Номер 3
Какая из форм выдает (возвращает) результат (3 . 3)
?
Ответ:
 (1) (list (+ 1 2)(+ 1 2))
 
 (2) ((lambda (x)(cons x y))(+ 1 2))
 
 (3) (prog (x)(setq x (+ 1 2)) (return (cons x x)))
 
 (4) (prog (x)(setq x (+ 1 2)) (print (cons x x)))
 
Упражнение 6:
Номер 1
Какой список фактических параметров соответствуют списку формальных параметров вида (x y z &rest t)
?
Ответ:
 (1) (1 2 3 4 5)
 
 (2) ((CONS 'a 'b ))
 
 (3) (1 (2 3 4 5))
 
Номер 2
Какой из списков аргументов соответствует списку формальных параметров вида (x y z &rest t)
?
Ответ:
 (1) ((CONS 'a 'b ))
 
 (2) ((a)(b) (c))
 
 (3) (1 (2 3 4 5))
 
Номер 3
Какой список значений аргументов соответствует списку параметров вида (x y z &rest t)
?
Ответ:
 (1) (1 (2 3 4 5))
 
 (2) ((CONS 'a 'b ))
 
 (3) ('CONS (car x)(cdr x))
 
Упражнение 7:
Номер 1
Какой список фактических параметров не соответствует списку формальных параметров вида (x y z &rest t)
?
Ответ:
 (1) (1 2 3 4 5)
 
 (2) ((CONS 'a 'b ))
 
 (3) ((a)(b) (c))
 
 (4) ('CONS (car x)(cdr x))
 
Номер 2
Какой из списков фактических параметров не соответствует списку формальных параметров вида (x y z &rest t)
?
Ответ:
 (1) (1 2 3 4 5)
 
 (2) ((a)(b) (c))
 
 (3) (1 (2 3 4 5))
 
 (4) ('CONS (car x)(cdr x))
 
Номер 3
Какой список аргументов не соответствует списку формальных параметров (x y z &rest t)
?
Ответ:
 (1) (1 2 3 4 5)
 
 (2) Nil
 
 (3) ((a)(b) (c))
 
 (4) ('CONS (car x)(cdr x))
 
Упражнение 8:
Номер 1
Отметьте функционально эквивалентные определения
Ответ:
 (1) (defun LN (L) (cond ((null L)Nil) (T (Cons 1 (LN (cdr L)))) ))
 
 (2) (defun LN (L) (cond ((null L)Nil) (T (Cons 1 (LN (cdr L)))) ) L)
 
 (3) (defun LN (L) (cond ((EQ L NIL)L) (T (Cons 1 (LN (cdr L)))) ))
 
 (4) (defun LN (L) (cond (L (Cons 1 (LN (cdr L)))) (1 L) ))
 
 (5) (defun LN (L) (cond ((null L)Nil) (T (Cons L (LN (cdr L)))) ))
 
Номер 2
Какая из форм не равнозначна остальным?
Ответ:
 (1) (union Nil '(1 2 3 1 2 3))
 
 (2) (union '(1 2 3) '(1 2 3))
 
 (3) (union '(1 2 3 ) NIL )
 
Номер 3
Какие формы могут работать как эквиваленты?
Ответ:
 (1) (prog1 x y z)
 
 (2) ((lambda (a b) a) x y)
 
 (3) ((lambda (a b) a b) x y)
 
 (4) (let ((a x)(b y))a)
 
 (5) (let ((a x)(b y)) )
 
Упражнение 9:
Номер 1
Какие из форм взаимозаменяемы по формальному значению?
Ответ:
 (1) (cons y (cdr x))
 
 (2) (rplaca x y)
 
 (3) (cons x (cdr y))
 
 (4) (rplacd x y)
 
Номер 2
Какая из форм отлична от остальных по результату?
Ответ:
 (1) (cons (+ 1 2)(+ 1 2))
 
 (2) ((lambda (x)(cons x x))(+ 1 2))
 
 (3) (prog (x)(setq x (+ 1 2)) (return (cons x x)))
 
 (4) (prog (x)(setq x (+ 1 2)) (print (cons x x)))
 
Номер 3
Какие из форм вырабатывают одинаковые значения?
Ответ:
 (1) (rplacd x y)
 
 (2) (rplaca x y)
 
 (3) (cons (car x) y)
 
 (4) (cons x (cdr y))