Главная / Программирование /
Основы функционального программирования / Тест 14
Основы функционального программирования - тест 14
Упражнение 1:
Номер 1
Отметьте тест, соответствующий спецификации List (Atom) => List (Number)
.
Ответ:
 (1) (A B C) => (1 2 3)
 
 (2) (B ( A) C) => (1 2 3)
 
 (3) (1 2 3) => (A B)
 
Номер 2
Какой из тестов соответствует спецификации List (Atom) => List (Number)
.
Ответ:
 (1) (A B C D) => (1 2 3)
 
 (2) A => B
 
 (3) (1 2 3) => ((1) () 2 3)
 
Номер 3
Выберите тест, соответствующий спецификации List (Atom) => List (Number)
.
Ответ:
 (1) (1 2 3 4) => ()
 
 (2) (A B C ) => B
 
 (3) ((A) 1 () 2 () 3) => (1 2 3)
 
Упражнение 2:
Номер 1
Отметьте тест, соответствующий спецификации List (Atom) => List ({Number, Atom})
.
Ответ:
 (1) (A B C 1 2 3) => (1 ОДИН 2 ДВА 3 ТРИ)
 
 (2) (1( 2) 3) => (1 2 3)
 
 (3) (1 2 3) => ((1) () 2 3)
 
Номер 2
Отметьте тест, соответствующий спецификации List (Atom) => List ({Number, Atom})
.
Ответ:
 (1) (A B C D) => (1 2 3)
 
 (2) A => B
 
 (3) ((A) 1 () 2 () 3) => (1 2 3)
 
Номер 3
Выберите тест, соответствующий спецификации List (Atom) => List ({Number, Atom})
.
Ответ:
 (1) (A) => ()
 
 (2) (A ( 2) 3) => (1 2 3)
 
 (3) (1 2 3) => ((1) (A) 2 3)
 
Номер 4
Какой из тестов соответствует спецификации List (Atom) => List ({Number, Atom})
.
Ответ:
 (1) (1 2 3) => (A B)
 
 (2) (1 A 2 B 3 C) => ((1) (A) 2 3)
 
 (3) ( 3 (A) 1 (B) 2 (C) ) => (1 2 3)
 
Упражнение 3:
Номер 1
Отметьте тест, соответствующий спецификации List (List(Atom)) => List (Atom)
.
Ответ:
 (1) ( (a) (b c) (d e f) ) => (1 2 3)
 
 (2) (1 2 3) => (1 2 3)
 
 (3) ((1)( 2) (3)) => (A . B)
 
Номер 2
Выберите тест, соответствующий спецификации List (List(Atom)) => List (Atom)
.
Ответ:
 (1) ( (a) () (1 2 3 4) ) => (A B C D)
 
 (2) (A B C D) => (1 2 3)
 
 (3) ((1) (2 2) (3 3 3)) => ТРИ
 
Номер 3
Какой из тестов соответствует спецификации List (List(Atom)) => List (Atom)
.
Ответ:
 (1) ((A)) => Nil
 
 (2) (( 2) A 3) => (1 2 3)
 
 (3) (A B C ) => (A B)
 
 (4) ((A)(B)(C)) => ((1) 3)
 
Упражнение 4:
Номер 1
Отметьте тест, на котором сработает функция: (defun Assoc (x al) (cond (al(cond ((eq (x (caar al))) (car al))))
Ответ:
 (1) (A ((A . B)) ) => (A . B)
 
 (2) (A ( X A B C )) => (A B C)
 
 (3) ( ((A . S))) => S
 
Номер 2
Выберите тест, которому удовлетворяет функция Subst
.
Ответ:
 (1) (A S ((B) (S) S)) => ((B) (A) A)
 
 (2) (A S (L (A) M)) => (L (S) M)
 
 (3) (A A (S (A) B)) => (S ((A)) B)
 
Номер 3
Укажите тест, на котором функция Pairlis
(см. лекцию 3) исчерпает два первые аргумента.
Ответ:
 (1) ((A B C) (S T U) ((A . U) (B . V)))
 
 (2) ((A B ) (S T U) ((A . U) (B . V)))
 
 (3) ((A B C) (S T) ((A . U) (B . V)))
 
Упражнение 5:
Номер 1
Отметьте тест, на котором не может сработать функция: (defun Assoc (x al) (cond (al(cond ((eq (x (caar al))) (car al))))
Ответ:
 (1) (A ((A . B)) …) => (A . B)
 
 (2) (A ( X A B C … )) => (A B C)
 
 (3) ( ((A . S))) => S
 
Номер 2
Выберите тест, на котором функцию Subst
нет смысла выполнять, т.к. не получается нового значения.
Ответ:
 (1) (A S ((B) (S) S)) => ((B) (A) A)
 
 (2) (A S (L (A S) M)) => (L (A A) M)
 
 (3) (A A (S (A) B)) => (S (A) B)
 
Номер 3
Укажите тест, на котором функция Pairlis
(см. лекцию 3) может завершиться аварийно из-за неподходящей структуры данных.
Ответ:
 (1) ((A B C) (S T U) ((A . U) (B . V)))
 
 (2) ((A B ) (S T U) ((A . U) (B . V)))
 
 (3) ((A B C D) (S) ((A . U) (B . V)))
 
Упражнение 6:
Номер 1
Выберите спецификацию, которой может соответствовать данный тест (a 1 b 2 3 4)
.
Ответ:
 (1) List ({Atom, Number})
 
 (2) List (Number )
 
 (3) List ((Atom Number))
 
Номер 2
Отметьте спецификацию, которой может соответствовать тест ((A 1)( B 2)( 3 С))
.
Ответ:
 (1) List(List(Atom))
 
 (2) List ({Atom, Number})
 
 (3) List (Atom List ( Number))
 
Номер 3
Какой спецификации соответствует данный тест ((a . 1)( b . 2)( 3 . 4))
.
Ответ:
 (1) List(List(Atom))
 
 (2) List ({Atom, Number})
 
 (3) List ((Atom . Number))
 
Упражнение 7:
Номер 1
Отметьте спецификацию, которой не может соответствовать данный тест (a 1 b 2 3 4)
.
Ответ:
 (1) List ({Atom, Number})
 
 (2) List (Atom )
 
 (3) List ((Atom Number))
 
Номер 2
Выберите спецификацию, которой заведомо не соответствует тест ((a 1)( b 2)( 3 4))
.
Ответ:
 (1) List(List(Atom))
 
 (2) List ({Atom, Number})
 
 (3) List ( List(Atom Number))
 
Номер 3
Какой из спецификаций не может соответствовать тест ((a . 1)( b . 2)( 3 . 4))
.
Ответ:
 (1) List(List(Atom))
 
 (2) List ({Atom, Number})
 
 (3) S ((Atom . Number))
 
Упражнение 8:
Номер 1
Отметьте тесты, соответствующие спецификации List (Atom) => List (Number)
.
Ответ:
 (1) (1 2 3) => (1 2 3)
 
 (2) (A B C D) => (1 2 3)
 
 (3) () => ()
 
 (4) (1( 2) 3) => (1 2 3)
 
 (5) (1 2 3) => (A B)
 
 (6) A => B
 
 (7) (1 2 3) => ((1) () 2 3)
 
 (8) (() 1 () 2 () 3) => (1 2 3)
 
Номер 2
Отметьте тесты, соответствующие спецификации List (Atom) => List ({Number, Atom})
.
Ответ:
 (1) (1 2 3) => (1 ОДИН 2 ДВА 3 ТРИ)
 
 (2) (A B C D) => (1 2 3)
 
 (3) () => ()
 
 (4) (1( 2) 3) => (1 2 3)
 
 (5) (1 2 3) => (A B)
 
 (6) A => B
 
 (7) (1 2 3) => ((1) () 2 3)
 
 (8) (() 1 () 2 () 3) => (1 2 3)
 
Номер 3
Отметьте тесты, соответствующие спецификации List (List(Atom)) => List (Atom)
.
Ответ:
 (1) ( (a) (b c) (d e f) ) => (1 2 3)
 
 (2) ( (a) () (1 2 3 4) ) => (A B C D)
 
 (3) (()) => Nil
 
 (4) (1 2 3) => (1 2 3)
 
 (5) (A B C D) => (1 2 3)
 
 (6) () => ()
 
 (7) (1( 2) 3) => (1 2 3)
 
 (8) (1 2 3) => (A B)
 
 (9) A => B
 
 (10) (1 2 3) => ((1) () 2 3)
 
 (11) (() 1 () 2 () 3) => (1 2 3)
 
Упражнение 9:
Номер 1
Отметьте спецификации, которым соответствует функция:
(defun Assoc (x al) (cond (al(cond ((eq (x (caar al))) (car al))))
Ответ:
 (1) (Atom List((Atom . Some))) => Some
 
 (2) (Atom List( Some)) => Some
 
 (3) (Atom List((Atom . Some))) => List
 
Номер 2
Отметьте спецификации, которым соответствует функция Subst
.
Ответ:
 (1) (Atom Some S (Atom)) => S (Some)
 
 (2) (Atom Some List (Atom)) => List (Some)
 
 (3) (Atom Atom S (Atom)) => S (Atom)
 
Номер 3
Отметьте спецификации, которым соответствует функция Pairlis
.
Ответ:
 (1) (List(Atom) List(Some) List((Atom . Some))) => List((Atom . Some))
 
 (2) (List(Some) List(Some) List((Some . Some))) => List((Some . Some))
 
 (3) (List(Atom) List(Number) List((Atom . Number))) => List((Atom . Number))