Задание № 1.
Реализовать функции (@CHAR atom n) и (@FINDCHAR atom char n). Первая возвращает n-ый символ атома atom, а вторая возвращает номер позиции первого вхождения char в atom, при этом n задает номер позиции в atom, начиная с которой необходимо выполнять поиск. Если n опущено, то поиск начинается с начала аtom.
Реализация на LISP
Обзор функций
(DEFUN @CHAR (X N) ...)
X символьный атом
N номер символа в атоме
Осуществляет проверку входных данных и в случае отсутствия ошибок передаёт функции @char1 список символов, входящих в атом X и номер N. Также функция отлавливает тривиальные ситуации, когда результат заведомо NIL.
(DEFUN @CHAR1 (X N) ...)
X список символов
N номер символа в списке
Осуществляет рекурсивный поиск N-ого элемента в списке. Если N превышает длину списка, возвращает NIL, иначе возвращает N-ый элемент списка.
(DEFUN @FINDCHAR (X Y N) ...)
X символьный атом
Y символ
N номер
Осуществляет проверку входных данных и в случае отсутствия ошибок передаёт функции @findchar1 список символов, входящих в атом X, символ Y, номер N (если не был указан, то 1) и 1 (номер текущего элемента).
(DEFUN @FINDCHAR1 (X Y N K) ...)
X список символов
Y символ
N номер
K номер текущего элемента в списке
Осуществляет рекурсивный поиск элемента Y в списке X. Возвращает номер позиции найденного элемента в списке (K), только если он не меньше N.
I. Задание № 1 ................ 2
Реализация на LISP.................. 2
Обзор функций ...................... 2
Исходный код ....................... 3
Примеры ............................ 4
Реализация на PROLOG ............... 5
Обзор функций ...................... 5
Исходный код ....................... 5
Примеры ............................ 6
II. Задание № 2 ................ 7
Реализация на LISP ................. 7
Обзор функций ...................... 7
Исходный код ....................... 8
Рекурсивная реализация ............. 8
Итерационная реализация ............ 9
С использованием функционала ....... 9
Примеры ............................ 10
III. Задание № 3 ................ 11
Реализация на FRL .................. 11
Обзор функций ...................... 11
Исходный код ....................... 13
Примеры ............................ 19
Реализация на PROLOG ............... 23
Обзор функций ...................... 23
Исходный код ....................... 25
Примеры ............................ 28
Список литературы .................. 31
1. «Программирование на языке ЛИСП в системе muLISP-90». Байдун В.В., Кружилов С.И., Сергиевский А.Е, Чернов П.Л. - М.: Моск. энеpг. ин-т, 1993. 40 с.
2. «Языки и системы представления знаний (язык программирования ФРЛ)». Байдун В.В., Бунин А.И., Чернов П.Л. М.: Моск. энеpг. ин-т, 1993. 44 с.
3. «Программирование на языке Пролог». Клоксин У., Меллиш К. М.: Мир, 1987.
4. «Введение в логическое программирование». Хоггер К. М.: Мир, 1988.