RL 3

зык RL.


Часть 3. Разные задачи. Интерпретатор.


1. Путь робота в лабиринте записан в виде выражения из букв E W N S (восток, запад, север, юг). Удалить из этого пути лишние шаги (т.е. участки E W, W E, N S, S N)


2. Путь робота на плоскости без стенок записан в виде выражения. Определить, возвращается ли робот в конце пути в исходное положение.


3. Описать функцию, преобразующую выражение (A B) (C D) (E F) в (A C E) (B D F) и действующую аналогично для всех выражений, являющихся последовательностями термов, каждый из которых есть заключенная в скобки последовательность атомов, причем количества атомов во всех термах равны ("переход от записи по столбцам к записи по строкам").


4. Удалить в последовательности символов повторения (результат содержит те же символы, но по одному разу).


5. Переставить символы в последовательности так, чтобы одинаковые символы стояли рядом.


6. а) По двум последовательностям символов построить их пересечение, то есть


последовательность, содержащую их общие символы. (Каждая из 


последовательностей не содержит повторений, и результат тоже не


должен содержать повторений.)


б) Дана последовательность различных символов; получить последовательность

термов, содержащую все перестановки данных символов (каждая перестановка –


один терм).

Интерпретатором языка RL называется программа, которая получает в качестве исходных данных текст некоторой RL-программы и значения всех параметров её главной функции, а выдаёт значение главной функции для этих значений параметров. Интерпретатор языка RL сам может быть написан на языке RL. Здесь предлагается реализовать его некоторые элементы.


7. Вычислите значение значимого RL-терма, в который могут входить стандартные имена:


a) ABORT, QUOTE
b) те же и FIRST, BF, LAST, BL
c) те же и expr
d) те же, IF и EQUAL.
e) все кроме CALL.