Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник заданий по программированию на языках Лисп, ФРЛ и Пролог.doc
Скачиваний:
53
Добавлен:
28.06.2014
Размер:
226.82 Кб
Скачать

Укажите вашу учебную группу

А-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)