Розглянемо квадратний блок тексту, 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
і так далі. Ніяких додаткових пробілів не додається під час прокатки таким чином. Рядки просто закінчуються
(Зв'язаний: Написати програму Прямокутний , яка виводить кількість разів це було повернутого )