- •II. Реализация правил
- •Часть 1. Реализовать задания n 21 - 25 из 1.1.5.
- •Часть 2. Входной файл на внешнем носителе содержит исходные
- •Часть 1. Реализовать задание n 35 из 1.2.1.
- •Часть 2. Реализовать задания n 39 - 40 из 1.2.2.
- •Часть 3. Реализовать задание n 45 из 1.2.3.
- •Укажите вашу учебную группу
- •Укажите вашу фамилию
- •Комната1
Укажите вашу учебную группу
А-14-94
- 27 -
Укажите вашу фамилию
ИВАНОВ
. . .
ХОТИТЕ ПОСМОТРЕТЬ РЕЗУЛЬТАТЫ РАБОТЫ? (ДА/НЕТ)
ДА
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(СТУДЕНТ*1
(ГРУППА ($VALUE (А-14-94 0)))
(ФАМИЛИЯ ($VALUE (ИВАНОВ)))
. . . . .
)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ВАРИАНТ N 3.
1. Реализовать функции (@FINDLIST object list test ) и
(@FINDLIST-IF test list) , осуществляющие поиск на верхнем уровне в
списке list. В качестве результата возвращается список элементов из
list, для которых (test object element) не NIL. Здесь element - те-
кущий элемент списка list. Если аргумент test опущен, то test =
EQUAL. Для второй функции предикат test является одноместным.
Примеры: (@FINDLIST 'A '(B C A B C A)) => (A A)
(@FINDLIST 5 '(1 0 -5 6 10) '<) => (6 10)
(@FINDLIST-IF 'MINUSP '(5 10 -3 -4)) => (-3 -4)
2. Реализовать функцию (@INSEND atom list), возвращающую спи-
сок list, в котором в конец каждого подсписка добавлен атом atom.
Пример: (@INSEND 'A '((B C) (B (C) D) (C D) NIL))
((B C A) (B (C A) D A) (C D A) (A))
3. Реализовать функцию (ANALYSIS sentence) , позволяющую рас-
познать синтаксически правильные предложения русского языка. Под
синтаксически правильными предложениями будем понимать те, в кото-
рых правильный порядок слов и все слова предложения имеются в сло-
варе.
Проверить работу функции на примере словаря, содержащего 12 -
15 слов. Использовать грамматику простых повествовательных предло-
- 28 -
жений, содержащих подлежащее, сказуемое и, возможно, несколько оп-
ределений.
Пример на ФРЛ:
(DEFRAMEQ
*ГРАММАТИКА*
(S1 ($VALUE ((ПРИЛАГАТЕЛЬНОЕ S1) (ПРИЛАГАТЕЛЬНОЕ S2))))
(S2 ($VALUE ((CУЩЕСТВИТЕЛЬНОЕ S3))))
. . . . .
)
(DEFRAMEQ
СТОЛ
(ЧАСТЬ-РЕЧИ ($VALUE (CУЩЕСТВИТЕЛЬНОЕ))) )
. . . . .
(ANALYSIS '(БОЛЬШОЙ СТОЛ СИНИЙ)) => NIL
(ANALYSIS '(БОЛЬШОЙ СИНИЙ СТОЛ)) => T
(ANALYSIS '(БОЛЬШОЙ СТОЛ ГОРИТ)) => T
ВАРИАНТ N 4.
1. Реализовать функции (@ASSOC key alist test) и (@ASSOC-IF
test alist) , осуществляющие поиск пары pair в ассоциативном списке
alist, для которой (test key (CAR pair)) не NIL. Если аргумент test
опущен, то test = EQUAL. Для второй функции предикат test является
одноместным.
Примеры: (@ASSOC 'А '(В D (A B)(C D))) => (A B)
(@ASSOC 5 '((1 2)(3 4)(6 8)) '<) => (6 8)
(@ASSOC-IF 'MINUSP '((2 3)(-3 4))) => (-3 4)
2. Реализовать функцию (@PRINTPOS list1 list2) , печатающую
элементы списка list1 каждый в отдельной строке, но с позиции, за-
даваемой соответствующим числом из списка list2. Если количество
элементов в списке list2 меньше необходимого, то он вновь просмат-
ривается сначала.
Пример: (@PRINTPOS '(A B C (B C D) NIL (E) END) '(1 2 3 4 5))
А
В
С
(B C D)
NIL
- 29 -
(E)
END
T
3. Реализовать функцию (LABYRINTH begin_point) , моделирующую
путешествие по лабиринту в процессе диалога.
Проверить работу функции на примере модели лабиринта из 10 -
12 комнат.
Пример на ФРЛ:
(DEFRAMEQ
KOM*1
(TEКСТ ($VALUE ("КОМНАТА1")))
(ВПЕРЕД ($VALUE (КОМ*2)))
(ВПРАВО ($VALUE (КОМ*5))) )
. . . . .
(LABYRINTH 'КОМ*1)