====%%(wacko wrapper=text wrapper_align=center) Язык RL (I)%%==

((!/ОписаниеRL Описание языка RL))

=====%%(wacko wrapper=text wrapper_align=center)Часть 1. Введение. Обработка выражений и термов.%%==


**1.**
Опишите функцию, значение которой на выражении **//X//** равно **//Y//**, на выражении **//Y//** равно **//X//**, а на остальных выражениях равно пустому выражению.


**2.**
Опишите логические функции
  a. **//not//**
  a. **//and//**
  a. **//or//**.
Их аргументами и значениями могут быть только **//TRUE//** или **//FALSE//**. (При недопустимых аргументах значение — НЕОПРЕДЕЛЕНО). Функция **//not//** имеет один аргумент, и её значение равно **//TRUE//** только если её аргумент равен **//FALSE//**. Функции **//and//** и **//or//** имеют по два аргумента, значение **//and//** равно **//TRUE//** только если оба аргумента равны **//TRUE//**, а значение **//or//** равно **//FALSE//** только если оба аргумента равны **//FALSE//**.


**3.**
Выразите функции **//LAST//** и **//BL//** через другие стандартные функции, т.е. не используя стандартных функций **//LAST//** и **//BL//**, опишите функции, значение которых равны:
  a. последнему терму выражения-аргумента);
  a. выражению-аргументу без последнего терма.

 
В задачах 4-5 аргументом является последовательность атомов


**4.**
Удалите
  a. все атомы **//bad//**.
  a. все заданные атомы.


**5.**
  a. Каждое вхождения атома **//bad//** замените на атом **//good//**.
  a. Каждое вхождения заданного атома замените на другой заданный атом.


**6.**
Измените порядок следования термов первого порядка на противоположный.


**7.**
  a. Опишите функцию even, значение которой на выражениях с чётным числом термов равно **//TRUE//**, а на остальных — **//FALSE//**. а.
  a. Опишите функцию, значение которой равно **//TRUE//** на выражениях, в которых число термов кратно 3, и равно **//FALSE//** на всех остальных выражениях.


**8.**
Остатки от деления целого числа на 3 могут быть равны 0, 1, 2. Опишите (в одной программе) три логические функции: **//mod_three_zero//**, **//mod_three_one//** , **//mod_three_two//**, каждая из которых имеет значение **//TRUE//** если и только если число термов в выражении даёт указанный остаток при делении на 3.


**9.**
Удалите из заданного выражения
  a. все термы (хх).
  a. все заданные термы.


**10.**
Удалите из заданного выражения все скобки.


**11.**
  a. Каждое вхождения атома **//bad//** замените на атом **//good//**.
  a. Каждое вхождения заданного атома замените на другой заданный атом.


**12.**
Измените порядок следования термов на противоположный, но рекурсивно по всем выражениям внутри термов.


----
адрес оригинала: ((/OnerXaum/RL1))