Рассмотрим квадратный блок текста, шириной N символов и высотой N, для некоторого нечетного целого числа N больше 1.
В качестве примера пусть N = 5, а текст будет:
MLKJI
NWVUH
OXYTG
PQRSF
ABCDE
Обратите внимание, что это алфавит (кроме Z), вращающийся против часовой стрелки от левого нижнего угла. Это как свернутый ковер.
«Развертывание» текста на четверть оборота по часовой стрелке FGHI
находится на том же уровне, что и ABCDE
результат:
PONM
QXWL
RYVK
STUJ
ABCDEFGHI
Это развертывание может быть сделано еще 7 раз, пока текст не станет одной строкой:
SRQP
TYXO
UVWN
ABCDEFGHIJKLM
UTS
VYR
WXQ
ABCDEFGHIJKLMNOP
WVU
XYT
ABCDEFGHIJKLMNOPQRS
XW
YV
ABCDEFGHIJKLMNOPQRSTU
YX
ABCDEFGHIJKLMNOPQRSTUVW
Y
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
Вызов
Задача состоит в том, чтобы написать программу, представляющую собой блок текста размером N × N, который выводит число раз, которое она «развернула» на четверть оборота, когда она перегруппировывается в шаблоны развертывания и запускается.
Здесь действительно два конкурса: (надеюсь, это не будет слишком грязно)
- Сделайте это с наименьшим N. (до предела N = 3)
- Сделайте это с самым большим N. (без ограничений)
Не будет принятого ответа, но победитель в каждой из этих категорий получит от меня как минимум 50 представителей. В случае связей самые старые ответы выигрывают.
пример
Если ваш блок кода
MyP
rog
ram
запуск его как есть должен вывести 0.
Бег
rM
oy
ramgP
должен вывести 1.
Бег
or
ramgPyM
должен вывести 2.
Бег
o
ramgPyMr
должен вывести 3.
Наконец, при запуске ramgPyMro
должно появиться 4.
Детали
- Вывод должен быть напечатан в stdout (или ближайшей альтернативе) сам по себе. Там нет ввода.
- Вы можете использовать для печати только код ASCII (шестнадцатеричные коды от 20 до 7E, включая пробел).
- Пробелы заполняют пустое место в раскручивающихся механизмах. (Если только вы не развернетесь влево.)
- Только меры от полностью квадратного до полностью плоского должны иметь действительный вывод. Никаких других мероприятий не будет.
- Вы не можете читать свой собственный источник.
- Вы можете использовать комментарии.
- N = 1 исключено, так как на многих языках программа
0
будет работать. При желании вы можете развернуть влево, а не вправо. Так, например,
MyP rog ram
становится
Pg yo Mrram
и так далее. Никакие дополнительные пробелы не добавляются при переходе таким образом. Линии просто заканчиваются
(Связанный: Напишите Прямоугольную Программу, которая Выводит число раз, которое это было повернуто )