Главная / Программирование /
Основы функционального программирования / Тест 3
Основы функционального программирования - тест 3
Упражнение 1:
Номер 1
На каком наборе данных функция member
(поиск заданного элемента из списка) выполнит ровно три шага (обращения к самой себе)?
Ответ:
 (1) a (c d e a f)
 
 (2) a (a b c d e f)
 
 (3) f (a b c d e)
 
Номер 2
На каком наборе данных функция member
(поиск заданного элемента из списка) выполнит ровно два витка (обращения к самой себе)?
Ответ:
 (1) a (c d e a f)
 
 (2) с (a b c d e f)
 
 (3) f (a b c d e)
 
Номер 3
На каком наборе данных функция member
(поиск заданного элемента из списка) выполнит ровно одно обращение к самой себе?
Ответ:
 (1) a (a c d e a f)
 
 (2) d (a b c d e f)
 
 (3) f (a )
 
Упражнение 2:
Номер 1
На каком наборе данных функция insert
(вставляет в список перед заданным элементом третий аргумент) сделает более двух обращений к самой себе?
Ответ:
 (1) (a b c d) d a
 
 (2) (b a c d) a b
 
 (3) () a c
 
Номер 2
На каком наборе данных функция insert
(вставляет в список перед заданным элементом третий аргумент) сделает более двух обращений к самой себе?
Ответ:
 (1) () a c
 
 (2) (b a c d) a b
 
 (3) (a b d) e c
 
Номер 3
На каком наборе данных функция insert
(вставляет в список перед заданным элементом третий аргумент) сделает менее трех обращений к самой себе?
Ответ:
 (1) (a b c d) a c
 
 (2) (b c d e a) a b
 
 (3) (a b c d e) f c
 
Упражнение 3:
Номер 1
На каком наборе данных функция append
(соединение двух списков в один) даст результат сразу, без рекурсии (обращений к самой себе)?
Ответ:
 (1) (a b) (c d)
 
 (2) () (a b c)
 
 (3) (a b c d) ()
 
Номер 2
На каком наборе данных функция append
(соединение двух списков в один) даст результат сразу, без рекурсивных обращений к себе?
Ответ:
 (1) (a b) (c d)
 
 (2) Nil ((a b) c d)
 
 (3) (a (b c) d) ()
 
Номер 3
В каком случае правильно указано число обращений к CONS
, которое произойдет
при выполнении функции append
(соединение двух списков в один) на заданных аргументах?
Ответ:
 (1) 2 (a b) (c d)
 
 (2) 5 (z x y) (w v)
 
 (3) 1 (a d c)(a)
 
 (4) 4 (a b) (a c d e)
 
Номер 4
Отметьте правильное число обращений к CONS
, которое произойдет при выполнении функции append
(соединение двух списков в один) на заданных аргументах.
Ответ:
 (1) 4 (a b) (c d)
 
 (2) 3 (z x y) (w v)
 
 (3) 1 (a d c)(a)
 
 (4) 3 (a b) (a c d e)
 
Упражнение 4:
Номер 2
Отметьте вариант, в котором правильно указано число обращений к себе функции equal
, сравнивающей две структуры для выяснения, совпадают ли они?
Ответ:
 (1) 1 (a) (a)
 
 (2) 2 ((a b) c) ((a b) d)
 
 (3) 4 (a b c) (a b c d)
 
Номер 3
В каком случае при выяснении, совпадают ли заданные S-выражения, число обращений к себе функции equal
(сравнение двух структур) указано верно?
Ответ:
 (1) 1 ( b c d) ( b c a)
 
 (2) 2 (a) (a)
 
 (3) 2 ((a b) c) ((a b) d)
 
 (4) 3 (a b c) (a b c d)
 
Упражнение 5:
Номер 1
На каких данных расход памяти (число вызовов cons
) при вычислении функции subst
(подстановка первого аргумента вместо второго в третий) пропорционален длине последнего из аргументов?
Ответ:
 (1) (x) y (a b x y )
 
 (2) x (x y z) (a b x y z)
 
 (3) (x y) z (a b (a z b) )
 
 (4) x (y z) ((a y z) b c d )
 
Номер 2
На каких данных расход памяти (число cons
) при вычислении функции subst
(подстановка первого аргумента вместо второго в третий) равен длине последнего из аргументов?
Ответ:
 (1) (x) y (a b (y d) x c)
 
 (2) x (y z) (a b x y z)
 
 (3) (x y) z (a b a z b z)
 
 (4) x (y z) ((a y z) b c d )
 
Номер 3
На каких данных расход памяти (число cons
) при вычислении функции subst
(подстановка первого аргумента вместо второго в третий) превосходит длину последнего из аргументов?
Ответ:
 (1) (x) y (a b x y c)
 
 (2) x (y z) (a b x y z)
 
 (3) (x y) z (a b (a z b) z)
 
 (4) x (x y z) ((x y z) b x y z)
 
Упражнение 6:
Номер 1
Какое из заданных выражений вычислимо? (pairlis
– наращивает список пар, соединяя в пары элементы первых двух аргументов)
Ответ:
 (1) (pairlis (a b c) ( t d f) ((e . x)(g . y)))
 
 (2) (pairlis '(a b c) '(t d f) '((r . y)(s. y)))
 
 (3) (pairlis (cons a b) '(t d f) '((k . y)(l . y)))
 
Номер 2
Какое из заданных выражений имеет определенный результат?
(pairlis
– наращивает список пар, соединяя в пары элементы первых двух аргументов)
Ответ:
 (1) (pairlis (cons a b) ( t d f) ((ten . x)(two . y)))
 
 (2) (pairlis (cons a b) '(t d f) '((k . y)(p . y)))
 
 (3) (pairlis () () '((k . y) (p . y)) )
 
Номер 3
Какая из заданных форм пригодна для успешной интерпретации?
Ответ:
 (1) (pairlis '(one two) '( t d f) '((7 . x)(8 . y)))
 
 (2) (pairlis (one two ten) '(t d f) '((k . y)(m . z)))
 
 (3) (pairlis '(one two ten) (LIST t d f) '((k . y)(m . z)))
 
Упражнение 7:
Номер 1
Какие из перечисленных текстов представляют перечень ветвей условного выражения?
Ответ:
 (1) (((null x) al) ((QUOTE T) (CONS (CONS (CAR x) (CAR Y) ) (pairlis (CDR x) (CDR y) al) )))
 
 (2) ((eq x (CAAR x)) (CAR al)) ((QUOTE T) (assoc x (CDR al)))
 
 (3) (((null m)(cons(eval(car m)a)(evlis(cdr m)a)))
 
Номер 2
Какие из данных текстов изображают перечень ветвей условного выражения?
Ответ:
 (1) ((eq x (CAAR x)) (CAR al)) ((QUOTE T) (assoc x (CDR al)))
 
 (2) (((eval(caar c)a)(eval(cadar c)a))(T(evcon(cdr c)a)))
 
 (3) (((null m)(cons(eval(car m)a)(evlis(cdr m)a)))
 
Номер 3
Какие из списков представляют перечень ветвей условного выражения (можно вставить cond
вслед за первой скобкой)?
Ответ:
 (1) (prog ()((null x) al) (T (CONS (CONS (CAR x) (CAR Y) ) (pairlis (CDR x) (CDR y) al) ))
 
 (2) (((eq x (CAAR al)) (CAR x)) al) ((QUOTE T) (assoc x (CDR al)))
 
 (3) ((eq(caar c)(cadar c)) (evcon(cdr c)a))
 
Упражнение 8:
Номер 1
На каких данных функция member
(поиск элемента в списке) выполнит ровно три обращения к себе?
Ответ:
 (1) a (c d e a f)
 
 (2) d (a b c d e f)
 
 (3) f (a b c d e)
 
Номер 2
На каком данном функция insert
(в список перед вторым аргументом вставляет третий) сделает более двух витков?
Ответ:
 (1) (a b c d) d a
 
 (2) (b a c d) b a
 
 (3) (a b d) c a
 
Номер 3
На каком данном функция append
(сцепление двух списков) даст результат сразу, без рекурсии?
Ответ:
 (1) (a b) (c d)
 
 (2) () (a b c)
 
 (3) Nil ((a b) c d)
 
 (4) (a b c d) ()
 
Упражнение 9:
Номер 1
В каких случаях правильно указано число обращений к CONS
, которое произойдет при выполнении функции append
(сцепление списков) на указанных аргументах?
Ответ:
 (1) append 2 (a b) (c d)
 
 (2) append 3 (z x y) (w v)
 
 (3) append 1 (a d c)(a)
 
 (4) append 4 (a b) (a c d e)
 
Номер 2
В каких случаях число обращений к функции equal
при выяснении, не совпадают ли заданные S-выражения, приведено верно?
Ответ:
 (1) 1 (a b c) ( b c a)
 
 (2) 1 (a) (a)
 
 (3) 2 ((a b) c) ((a b) d)
 
 (4) 4 (a b c) (a b c d)
 
Номер 3
На каких данных расход памяти при вычислении функции subst
(подстановка первого аргумента вместо второго в заданную структуру) пропорционален объему последнего из аргументов?
Ответ:
 (1) (x) y (a b x y c)
 
 (2) x (y z) (a b x y z)
 
 (3) (x y) z (a b (a z b) z)
 
 (4) x (y z) ((a y z) b c d )