игра брюс 2048
Главная / Программирование / Основы функционального программирования / Тест 2

Основы функционального программирования - тест 2

Упражнение 1:
Номер 1
Какое из приведенных данных представляет собой составное S-выражение?

Ответ:

 (1) (car (quote (cons a b))) 

 (2) atom 

 (3) ( cons (a b) NIL ) 


Номер 2
Какое из приведенных данных представляет собой сложное S-выражение?

Ответ:

 (1) ((one . один) (two. два) (three . три)) 

 (2) list 

 (3) ( ( cons (a b) NIL ) 


Номер 3
Какое из приведенных данных представляет собой самое простое составное S-выражение?

Ответ:

 (1) ((one . один) (two. два) (three . три)) 

 (2) (A . B) 

 (3) ( cons (a b) NIL ) 


Упражнение 2:
Номер 1
Какое из приведенных данных представляет собой список?

Ответ:

 (1) ((a . один) (b . два) (c . три) . пять) 

 (2) ( ( cons (a b) NIL ) 

 (3) ( ( cons (a b) NIL )) 


Номер 2
Какое из приведенных данных представляет собой список?

Ответ:

 (1) (car (quote (Маша Миша Майкл))) 

 (2) ((a . один) (b . два) (c . три) . пять) 

 (3) ( ( cons (a b) NIL ) 


Номер 3
Какое из приведенных данных не представляет собой список?

Ответ:

 (1) ((a . один) (b . два) (c . три) . пять) 

 (2) (cons (cons a b) NIL ) 

 (3) (cons (a b) NIL ) 


Упражнение 3:
Номер 1
Какой из приведенных текстов не представляет собой ни список, ни сложное S-выражение?

Ответ:

 (1) ;; (a b c) 

 (2) (eq a (b . c)) 

 (3) (один, два, три, четыре, два) 


Номер 2
Какой из приведенных текстов не изображает ни список, ни сложное S-выражение?

Ответ:

 (1) ( cons (a b) NIL ) 

 (2) атом 

 (3) (eq a b) 

 (4) (три, четыре, пять) 


Номер 3
Какое из приведенных данных не представляет собой ни список, ни сложное S-выражение?

Ответ:

 (1) ( ( cons (a b) NIL ) 

 (2) (eq a (b . c)) 

 (3) (один, два, четыре) 


Упражнение 4:
Номер 1
Какое из приведенных S-выражений может играть роль представления функций в Лисп-программе?

Ответ:

 (1) (Label Первый Car) 

 (2) (defun fn (x ) (cons x x)) 

 (3) (lambda car x) 


Номер 2
Какое из приведенных S-выражений может изображать функцию в Лисп-программе?

Ответ:

 (1) car 

 (2) (lambda x (car x)) 

 (3) (defun fn (x ) (cons x x)) 


Номер 3
Какое из приведенных S-выражений может играть роль представления функций в вычисляемой форме?

Ответ:

 (1) (cons x x) 

 (2) (lambda (x) (car x)) 

 (3) (defun fn (x ) (cons x x)) 


Упражнение 5:
Номер 1
В какой из приведенных форм представления функций расположены корректно?

Ответ:

 (1) ( (lambda (x) (car x)) (quote (1 2 3))) 

 (2) (два плюс три минус четыре) 

 (3) ((cons 'один 'два) 'три 'четыре) 

 (4) (((lambda (x) (car x))) '(один два три)) 


Номер 2
Какое из приведенных S-выражений не может играть роль представления функций в Лисп-программе?

Ответ:

 (1) (один два три) 

 (2) Cons 

 (3) (lambda (x) (car x)) 


Номер 3
В каком из приведенных S-выражений представления функций расположены корректно?

Ответ:

 (1) (defun fn (x ) (cons x x)) (fn 123 ) 

 (2) (два плюс три минус семь) 

 (3) ((cons 'один 'сто) 'два 'двести) 

 (4) (((lambda (x) (car x))) '(сто двадцать три)) 


Номер 4
Какое из приведенных S-выражений не может изображать функцию в Лисп-программе?

Ответ:

 (1) Cons 

 (2) (lambda (x) (car x)) 

 (3) (defun fn (x ) (cons x x)) 


Упражнение 6:
Номер 1
Как можно изменить форму (cons (a три) (b четыре)), чтобы получить значение cons от заданных списков, а не диагностическое сообщение?

Ответ:

 (1) перед каждым из аргументов вставить апостроф, блокирующий их вычисление, что дает (cons '(a 'три) '(b 'четыре)) 

 (2) убрать лишние скобки в аргументах, что дает (cons a 'три b 'четыре) 

 (3) нужно поставить апосторофы таким образом (cons ('a 'три) ('b 'четыре)) 


Номер 2
Как можно воздействовать на форму (cons (a 'два) (b 'семь)), чтобы интерпретатор обязательно выдал ее значение, а не диагностическое сообщение?

Ответ:

 (1) в начало каждого из аргументов следует вставить бинарную функцию, например, (eq a 'два), (cons b 'семь) в результате получится (cons (eq a 'два) (cons b 'семь)) 

 (2) заменить a и b на атом car, что дает (cons (car 'два) (car 'семь))  

 (3) символы a и b можно заменить на имена унарных функций над атомами, например atom или quote, что дает (cons (atom 'два) (quote 'семь)) 


Номер 3
Как можно изменить форму (cons (a 'три) (b 'четыре)), чтобы получить значение при заданных значениях переменных a и b, а не диагностическое сообщение?

Ответ:

 (1) перед a и b вставить апостроф, блокирующий их вычисление, что дает (cons ('a 'три) ('b 'четыре))  

 (2) в начало каждого из аргументов следует вставить бинарную функцию, чтобы их значения вычислялись, например, (eq a 'три), (cons b 'четыре), получится (cons (eq 'a 'три) (cons 'b 'четыре)) 

 (3) символы a и b заменить на их значения, например на 'шесть и 'пять соответственно, что даст нечто вроде (cons ('шесть 'три) ('пять 'четыре))  


Номер 4
Как можно изменить форму (cons (a 'три) (b 'два)), чтобы увидеть ее значение при заданных a и b, а не диагностическое сообщение?

Ответ:

 (1) убрать внутренние скобки, что дает (cons a 'три b 'два) 

 (2) аргументы функций передать как фактические параметры, что дает форму ((lambda (x y)(cons x y)) '(a 'три) '(b 'два)) 

 (3) символы a и b надо стереть, что даст нечто вроде (cons ('три) ('два)) 


Упражнение 7:
Номер 1
По какой причине не может быть вычислена форма ((cons 'один 'два) 'три) и как ее исправить?

Ответ:

 (1) потерян головной элемент списка, возможно, надо (cons (cons 'один 'два) 'три) 

 (2) первый элемент формы должен быть атомом. Надо убрать лишние скобки, будет (cons 'один 'два 'три) 

 (3) функция cons не приспособлена к работе с числами. Надо атомы заключить в скобки: ((cons '(один) '(два)) 'три) 


Номер 2
Что можно подправить, чтобы форма (cons 'один 'два 'три) имела значение?

Ответ:

 (1) оставить в списке только два аргумента 

 (2) заменить атомы списками 

 (3) поставить апострофы перед атомами 


Номер 3
По какой причине не может быть вычислена форма ((cons x 'два) 'три). Что в ней надо подправить, чтобы добиться вычислимости?

Ответ:

 (1) первый элемент списка имеет значение, но оно не представляет собой функцию. Например, можно перед ним вставить lambda (x ). Это даст форму ( (lambda (x )(cons x 'два)) 'три) и ее значение (три . два) 

 (2) первый элемент формы должен быть атомом, так что можно убрать скобки из аргументов, что дает (cons x 'два 'три )  

 (3) надо изображение переменной x заменить на конкретное значение, например 'шесть, что даст нечто вроде ((cons 'шесть 'два) 'три) 


Упражнение 8:
Номер 1
Какие из приведенных данных представляют собой S-выражение? 

Ответ:

 (1) (car (quote (list 'one 'two 'ten)))  

 (2) ((a . atom) (b . binary) (c . char))  

 (3) atom 

 (4) ( ( cons (a b) NIL ) 


Номер 2
Какие из приведенных данных представляют собой список?

Ответ:

 (1) (car (quote (a b c d))) 

 (2) ((a . atom) (b . binary) (c . char) . d) 

 (3) ( ( cons (a b) NIL ) 

 (4) ( ( cons (a b) NIL )) 


Номер 3
Какие из приведенных данных не представляют собой ни список, ни S-выражение? 

Ответ:

 (1) ( ( cons (a b) NIL ) 

 (2) ;; (a b c) 

 (3) (a . (b . с)) 

 (4) (list a1 b2 c31 d42 ) 


Упражнение 9:
Номер 1
Как следует изменить форму (cons (a 'a3) (b 'b4)), чтобы получить ее значение?

Ответ:

 (1) перед каждым из аргументов функции cons вставить апостроф, блокирующий их вычисление 

 (2) в начало каждого из аргументов следует вставить бинарную функцию, чтобы их значения могли быть вычислены, если a и b определены. Например (cons (eq a 'a3) (cons b 'b4)) может быть вычислена 

 (3) убрать внутренние скобки, что даст (cons a 'a3 b 'b4) 

 (4) символы a и b надо заменить на имена унарных функций 


Номер 2
Почему форма ((cons 'a1 'b2) 'c3) не может быть вычислена?

Ответ:

 (1) первый элемент списка имеет значение, но оно не представляет собой функцию 

 (2) потерян головной элемент списка, возможно, было (cons (cons 'a1 'b2) 'c3) 

 (3) первый элемент формы должен быть атомом 

 (4) функция cons не приспособлена к работе с атомами 


Номер 3
Как преобразовать форму (cons 'a1 'b2 'c3 'd4), чтобы получить выражение, имеющее значение?

Ответ:

 (1) оставить в списке аргументов только два элемента 

 (2) заменить "cons" на "list" - функция, строящая список из произвольного числа элементов 

 (3) заменить атомы на списки 

 (4) убрать апострофы перед аргументами 




Главная / Программирование / Основы функционального программирования / Тест 2