Зона релакса
![топ 100 блогов](/media/images/default.jpg)
Алфавит языка программирования состоит из букв и четырех символов: ();=
Имена переменных - любые непустые последовательности букв.
Значение переменной - последовательность (возможно, пустая) букв и символов.
Приходится ввести ограничение (иначе текст программы не читается однозначно): значение переменной не должно содержать комбинацию символов ); (стоящий на голове унылый смайлик с подбитым глазом).
Программа представляет собой последовательность команд двух типов:
имя=(текст) - присваивание переменной 'имя' значения 'текст';
п(имяа;имяб;…;имяя) - последовательный вывод на печать значений перечисленных в скобках переменных (возможно, одинаковых), значения которых должны быть присвоены предыдущими командами. Если значение какой-то переменной в программе присваивается несколько раз, то на печать выводится то ее значение, которое присвоено в последней команде перед печатью. Если в программе есть несколько операций вывода на печать, то при каждой следующей печати печатание производится справа от уже напечатанного текста.
Соседние команды разделяются символом ;
Написать программу, выводящую на печать свой собственный текст.
Свое решение убираю из-под глаз. Получилось довольно длинно, хочется покороче. Для этого напрашивается немного подхимичить с условием, но это неспортивно. А найти более короткое решение, основанное на какой-то идее, отличной от той, на которой основано мое решение, пока не получается.
а=(а);
б=());
ба=(=();
баа=(;б);
бааа=
(;п(а;ба;а;б;баа;ба;б;б;баа;а;ба;ба;б;баа;а;а;ба;баа;б;баа;а;а;а;ба;бааа;б;бааа));
п(а;ба;а;б;баа;ба;б;б;баа;а;ба;ба;б;баа;а;а;ба;баа;б;баа;а;а;а;ба;бааа;б;бааа)
|
</> |