ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

1230. Интроспективная программа

Ограничение времени: 1.0 секунды
Ограничение памяти: 64 МБ
Пожалуй нет такого программиста, который бы не слышал об известной задаче, предложенной Норбертом Винером. Задача заключается в том, чтобы написать программу, которая, будучи запущенной, посылала бы свой исходный текст на устройство печати. Заметьте, что не разрешается использовать файлы с исходным кодом этой программы или системно-зависимые вещи вроде адресов памяти, по которым может находиться исходный текст. Такая программа называется интроспективной. Хорошо известна теорема, утверждающая, что интроспективную программу возможно написать практически на любом языке программирования.
Было бы нечестно требовать написать интроспективную программу на языке, который разные участники соревнования знают в разной степени. Поэтому мы опишем формальную грамматику нового языка, названного PIBAS. Вашей задачей будет написать программу, которая выведет интроспективную программу на языке PIBAS.
Проверка программы на PIBAS будет включать проверку синтаксиса и тестовый запуск. Программа будет считаться правильной, если она выведет строку, совпадающую с её исходным текстом.
Описание языка PIBAS:
  1. Программа на PIBAS состоит из одного или более операторов, разделённых символом ";" (точка с запятой). Программа записывается в одну строку не длиннее 32 000 символов.
  2. Существует два типа операторов: оператор присваивания строки и оператор вывода.
  3. Оператор присваивания используется следующим образом: <Строковая переменная>=<Строковое выражение>
  4. Строковая переменная обозначается одиночной заглавной латинской буквой.
  5. Строковое выражение — это или строковая переменная, или строковая константа, или функция взятия подстроки, или операция конкатенации строковых выражений с использованием знака "+" (плюс).
  6. Строковая константа — это последовательность любых печатных символов, заключённая в двойные (") или одиночные (') кавычки. Эта последовательность не может содержать символ кавычки, в которые она заключена. Примеры: 'Rybinsk', "O key!", "I don't know solution."
  7. Функция взятия подстроки используется следующим образом: $(<Строковая переменная>,<Беззнаковое целое>,<Беззнаковое целое>). Второй параметр задаёт первый символ подстроки, а третий задаёт длину подстроки. Позиции нумеруются с единицы.
  8. Оператор вывода: ?<Строковое выражение>.
Общая длина всех строк, посланных на вывод программой на языке PIBAS, не должна превосходить 32 000 символов.
Примеры:
Программа на PIBAS Вывод
?"Hello, "+'World!' Hello, World!
A='World, Hello!';?$(A,8,5);?", ";B=$(A,1,5)+'!';?B Hello, World!

Исходные данные

Ввод не используется.

Результат

Вывод должен содержать интроспективную программу на языке PIBAS.
Источник задачи: Четвертьфинальные соревнования ACM ICPC 2002–2003 в центральном регионе России, Рыбинск, октябрь 2002