Главная / Программирование /
Введение в программирование на Лиспе / Тест 7
Введение в программирование на Лиспе - тест 7
Упражнение 1:
Номер 1
Функционалом называют функцию:
Ответ:
 (1) аргументами которой могут выступать символьные выражения 
 (2) аргументами или результатом которой могут выступать другие функции 
 (3) аргументами которой могут выступать значения, полученные вычислением других функций 
Номер 2
В чем заключается различие между аргументами (и значениями) функционалов и функций:
Ответ:
 (1) в качестве аргументов и результатов у функций могут выступать функционалы. 
 (2) в качестве аргументов и результатов у функционалов могут выступать функции 
 (3) в качестве аргументов и результатов у функций могут выступать только определенные типы объектов, а у функционалов любые 
Номер 3
Что такое функционал:
Ответ:
 (1) это функция, в качестве аргументов которой могут выступать любые формы 
 (2) это функция, в качестве аргументов которой могут выступать значения других функций, вычисленных ранее 
 (3) это функция, аргументом или результатом которой может выступать другая функция 
Упражнение 2:
Номер 1
Какие факторы должны быть учтены при определении отображающей функции:
Ответ:
 (1) способ получения результата из отображаемого множества 
 (2) как распределить память под новое множество и определение функции 
 (3) каким языком воспользоваться для написания этой функции 
Номер 2
Какие факторы должны быть учтены при определении отображающей функции:
Ответ:
 (1) определение структуры данных в отображаемом множестве 
 (2) каким образом сохранять определения функции в системе 
 (3) как отличить нужные конечные результаты отображающей функции от промежуточных. 
Номер 3
Какие факторы должны быть учтены при определении отображающей функции:
Ответ:
 (1) структура данных в отображаемом множестве 
 (2) метод, с помощью которого вычисляется итоговое значение результата 
 (3) каким языком воспользоваться для написания этой функции 
Упражнение 3:
Номер 1
Какое из приведенных ниже выражений является примером правильного использования функционала map-el
:
(defun map-el (fn xl)
(cond
(xl (cons (funcall fn (car xl) )
(map-el fn (cdr xl))
) ) ) )
Ответ:
 (1) (map-el caddr '(1 2 3 4))
 
 (2) (map-el '(1 2 3 4))
 
 (3) (map-el '+ '(1 2 3 4))
 
 (4) (map-el '(1 2 3 4) #'caddr)
 
 (5) (map-el #'car '((1)(2)(3)(4)))
 
Номер 2
Какое из приведенных ниже выражений является примером правильного использования функционала map-el
:
(defun map-el (fn xl)
(cond
(xl (cons (funcall fn (car xl) )
(map-el fn (cdr xl))
) ) ) )
Ответ:
 (1) (map-el caddr '(1 2 3 4))
 
 (2) (map-el #'+ '(1 2 3 4))
 
 (3) (map-el '+ '(1 2 3 4))
 
 (4) (map-el #'caddr '(1 2 3 4))
 
Номер 3
Какой из результатов вызова функционала map-el
, аргументами которого выступают следующие функции и списки, является правильным:
(defun map-el (fn xl)
(cond
(xl (cons (funcall fn (car xl) )
(map-el fn (cdr xl))
) ) ) )
Ответ:
 (1) (map-el #'car '(1 (2) 3)), результат - (1)
 
 (2) (map-el #'car '(1 (2) 3)), результат - (1 2)
 
 (3) (map-el #'cdr '(1 (2) 3)), результат - (2)
 
 (4) (map-el #'car '((1) (2 3))), результат - (1 2)
 
 (5) (map-el #'length '(1 (2) 3)), результат - (1 2)
 
Упражнение 4:
Номер 1
Укажите формы, с помощью которых можно удвоить каждый элемент списка:
Ответ:
 (1) (defun F(xl) (cond (xl (cons (* 2 (car xl) ) (F (cdr xl))))))
 
 (2) (defun F(xl) (map-el (lambda (x) (* 2 x) ) xl))
 
 (3) (defun F(xl) (map-comp (lambda (x) (* 2 x)) xl))
 
Номер 2
Укажите формы, с помощью которых можно обнулить каждый элемент списка:
Ответ:
 (1) (defun F(xl) (cond (T (cons (- (car xl) (car xl) ) (F (cdr xl))))))
 
 (2) (defun F(xl) (cond ((Null xl) Nil) (T (cons (- (car xl) (car xl)) (F (cdr xl))))))
 
 (3) (defun F(xl) (map-el (lambda (x) 0 ) xl)
 
Номер 3
Укажите формы, с помощью которых можно посчитать квадрат каждого элемента списка:
Ответ:
 (1) (defun F(xl) (cond (xl (cons (* (car xl) (car xl) ) (F (cdr xl))))))
 
 (2) (defun F(xl) (cond ( (T (cons (* (car xl) (car xl)) (F (cdr xl))))))
 
 (3) (defun F(xl) (map-el (lambda (x) (* x x)) xl))
 
Упражнение 5:
Номер 1
Каким образом в базовом Лиспе представляется строковая константа:
Ответ:
 (1) _слово1_слово2_…_словоN
 
 (2) " слово1 слово2 слово3"
 
 (3) ;слово1 слово2 слово3
 
Номер 2
Каким образом в базовом Лиспе выглядит строковая константа:
Ответ:
 (1) "abc_def_ghi"
 
 (2) 'abc_def_ghi
 
 (3) " abc_def_ghi "
 
Номер 3
Каким образом в базовом Лиспе изображается строковая константа:
Ответ:
 (1) "строка
 
 (2) 'строка
 
 (3) "строка"
 
Упражнение 6:
Номер 1
Какие из приведенных ниже данных являются атомами:
Ответ:
 (1) ("(abcd)")
 
 (2) abcd1234567890
 
 (3) '"abcd"
 
 (4) "(abcd)"
 
 (5) 12345678910111213141516117abcd
 
Номер 2
Какое из приведенных ниже данных является атомом:
Ответ:
 (1) ("слово1 слово2 словоN")
 
 (2) слово1 слово2 словоN
 
 (3) ;"слово1 слово2 словоN"
 
 (4) (слово1 слово2 словоN)
 
 (5) "(слово1 слово2 словоN)"
 
Номер 3
Какие из приведенных ниже данных являются атомами:
Ответ:
 (1) ("(abcd)")
 
 (2) "abcd"
 
 (3) (abcd)
 
 (4) 12345678910111213141516117
 
Упражнение 7:
Номер 1
Какой из результатов вызова функционала map-comp
, аргументами которого выступают следующие функции и списки, является правильным:
(defun map-comp (fn al vl)
(cond
(al (cons (fn (car al) (car vl))
(map-comp (cdr al) (cdr vl))
) ) ) )
Ответ:
 (1) (map-comp #'car '(1 2 3) '(1 2 4)), результат ( 1 2 3)
 
 (2) (map-comp #'cons '(1 2 3) '(1 (2 4))), результат ((1 . 1) (2 . 2) (3 . 4))
 
 (3) (map-comp #'cons '(1 2 3) '(1 (2 4) )), результат ((1 . 1) (2 2 4) (3))
 
 (4) (map-comp #'cons '(1) '(5 2)), результат (1 . (5 2))
 
Номер 2
Какой из результатов вызова функционала map-comp
, аргументами которого выступают следующие функции и списки, является правильным:
(defun map-comp (fn al vl)
(cond
(al (cons (fn (car al) (car vl))
(map-comp (cdr al) (cdr vl))
) ) ) )
Ответ:
 (1) (map-comp #'* '(1 2 3) '((1 2) 4)), результат ((1 2) 8)
 
 (2) (map-comp #'/ '(1 2) '(2 2)), результат (1/2 1)
 
 (3) (map-comp #'+ '(1 2 3) '(1 2)), результат (2 4)
 
 (4) (map-comp #'/ '(1 2) '(2 2)), результат (0.5 .1.0)
 
Номер 3
Какой из результатов вызова функционала map-comp
, аргументами которого выступают следующие функции и списки, является правильным:
(defun map-comp (funcall fn al vl)
(cond
(al (cons (fn (car al) (car vl))
(map-comp (cdr al) (cdr vl))
) ) ) )
Ответ:
 (1) (map-comp #'car '(1 2 3) '((1 2) 4)), результат ( 1 (1 2))
 
 (2) (map-comp #'cdr '(A B C) '(A B (C))), результат (B (C))
 
 (3) (map-comp #'* '(1 2 (3)) '(2 3 5)), результат (2 6 8)
 
 (4) (map-comp #'/ '(10.0 7.0) '(5 2)), результат (2 3.5)
 
Упражнение 8:
Номер 1
Какая из приведенных ниже форм не содержит ошибки:
Ответ:
 (1) (lambda (y z) (map-el #'length (cons y z)))
 
 (2) (map-comp #'(lambda (y)(cons y y)) '(x) '(y))
 
 (3) (defun F(x y z) (map-comp #'* x (cons y z)))
 
Номер 2
Какая из приведенных ниже форм не содержит ошибки:
Ответ:
 (1) (map-comp #'(lambda (x y) (* x y)) '(1 2) '(3 4))
 
 (2) (defun F(x y) (map-el #'* (cons x (cons y y))))
 
 (3) (map-el #'(lambda (y)(cons x y)) x))
 
Номер 3
Какая из приведенных ниже форм не содержит ошибки:
Ответ:
 (1) (lambda (x y z) (map-el #'length (cons x (cons y z))))
 
 (2) (defun F(x y z) (map-el #'* (cons x (cons y z))))
 
 (3) (map-el #'(lambda (y)(cons y y)) '(x))
 
Упражнение 9:
Номер 1
Какая из приведенных ниже форм содержит ошибку:
Ответ:
 (1) (map-el '#(car '(1 2 3)) '(1 2 3) '(4 5 6))
 
 (2) (defun f3 (xl) (map-el (lambda (x) (* x x )) 'xl))
 
 (3) (defun f(x y) (map-el #'(lambda (x1) (/ x1 y)) x))
 
Номер 2
Отметьте, какая из приведенных ниже форм содержит ошибку:
Ответ:
 (1) (map-comp #'car '((1)( 2)(3)) '((4) (5) (6)))
 
 (2) (defun f(x y) (map-comp #'(lambda (x1 y1) (* (car x1) (car y1))) x y))
 
 (3) (defun f(x y) (map-el #'(lambda (x1) (cons x1 y)) x))
 
Номер 3
Укажите форму, содержащую ошибку:
Ответ:
 (1) (map-comp '#(car '(1 2 3)) '(1 2 3) '(4 5 6))
 
 (2) (defun f3 (xl) (map-el (lambda (x)(+ 10 (* x x x))) xl))
 
 (3) (defun f(x y) (map-el (lambda (x1 y1) (/ (car x1) (car y1)))))
 
 (4) (defun f(x y) (map-el (lambda (x y) (+ (car x) (car y)) x y)))
 
Упражнение 10:
Номер 1
Какой из результатов вызова функционала map-ap
, аргументами которого выступают следующие функции и списки, является правильным:
(defun map-ap (fn ll)
(cond
(ll (append (fn (car ll) )
(map-ap fn (cdr ll) )
) ) ) )
Ответ:
 (1) (map-ap #'cdr '((A B C) (A B (C))) ), результат (B C B C)
 
 (2) (map-ap #'* '(1 2 3)), результат (1 4 9)
 
 (3) (map-ap #'+1 '(10.0 7.0)), результат (11.0 8.0)
 
Номер 2
Какой из результатов вызова функционала map-ap
, аргументами которого выступают следующие функции и списки, является правильным:
(defun map-ap (fn ll)
(cond
(ll (append (fn (car ll) )
(map-ap fn (cdr ll) )
) ) ) )
Ответ:
 (1) (map-ap #'cdr '((A B C)) ), результат (B C)
 
 (2) (map-ap #'cdr '(1 2 3)), результат ((2 3) (3) nil)
 
 (3) (map-ap #'car '(10.0 7.0)), результат (nil nil)
 
Номер 3
Какой из результатов вызова функционала map-ap
, аргументами которого выступают следующие функции и списки, является правильным:
(defun map-ap (fn ll)
(cond
(ll (append (fn (car ll) )
(map-ap fn (cdr ll) )
) ) ) )
Ответ:
 (1) (map-ap #'cdr '((A B C) (A B (C))) ), результат (B C B (C))
 
 (2) (map-ap #'* '(1 2 3)), результат (1 4 9)
 
 (3) (map-ap #'+ '(10.0 7.0)), результат (11.0 8.0)