Сборник занимательных задач по языку программирования C
Часть III
Нечеловеческие эксперименты над C и C++.
Палиндромы
Палиндромами называют слова или предложения, которые одинаково читаются как слева направо, так и справа налево:
А роза упала на лапу Азора
На C мы можем написать палиндром с помощью макросов:
#define rof break
void main(void)
{
;for(;;)rof;
}
Строка читается одинакого в обе стороны и программа компилируется без единой ошибки.
Вот другой пример, где симметричность строки устанавливается не на уровне отдельных символов, а на уровне лексических единиц:
; return ; return ;
Компилятор предупредит нас о недостежимом коде, но программу откомпилирует.
Существует палиндромы в виде квадрата:
S | A | T | O | R |
A | R | E | P | O |
T | E | N | E | T |
O | P | E | R | A |
R | O | T | A | S |
«Sator Arepo tenet opera rotas» в переводе с латыни означает «Пахарь Арепо плугом направляет пашню». Эту фразу можно прочитать по вертикали и горизонтали из верхнего левого и из правого нижнего углов.
Вот квадратный палиндром на C:
; A /**/ ++ +
A * B + ++
/**/ B - B /**/
++ + B * A
+ ++ /**/ A ;
А это он же в одну строку без комментариев:
;A++ + A * B + ++B - B++ + B * A + ++A;
- Назад
- Содержание
- Вперёд