Вступ
Напишіть повну програму, яка обертає прямокутний блок символів ASCII на 90 градусів за годинниковою стрілкою. Коли сама програма повертається на 90 градусів за годинниковою стрілкою, вона обертає блок символів ASCII на 90 проти годинникової стрілки.
Правила
- Ви багато хто не використовуєте вбудовані модулі, які обертають або переміщують матриці. Наприклад, у MATLAB / Octave
rot90
та операторі транспонування'
заборонено. - Ви повинні написати повну програму, яка використовує STDIN і STDOUT або найближчий еквівалент.
- Ваша програма повинна бути прямокутною, і припустимо, що вхід також прямокутний.
- Вхід і вихід є рядками, розділеними на новий рядок, і не матимуть останніх рядків.
Коли ви працюєте зі своїм вихідним кодом як вхідним, ваша програма повинна обертатися на 90 градусів за годинниковою стрілкою. Вихід повинен бути другою програмою на тій же мові, яка обертає свій вхід на 90 градусів проти годинникової стрілки. Коли поверненій програмі надається вихідний код у якості вхідного сигналу, вона повинна виводити вихідний код вихідної програми.
Примітка. Обидві програми повинні працювати для будь-якого вводу, а не лише для власного вихідного коду, тому односимвольна квітка заборонена.
Приклад
Скажіть наступне - це дійсна програма, яка обертає свій вхід на 90 градусів гіпотетичною мовою ExampleLang.
^f a2% 3
lk (^_^&
v
D8 $4 /
Запускаючи з собою як вхід, він виводить іншу дійсну програму, яка обертає свій вхід проти годинникової стрілки:
D l^
8 kf
$ (a
4 ^2
_%
^
/v&3
Ця друга програма, якщо дана сама як вхідна, виводить оригінальну програму. Зауважте, що в порожньому рядку повинно бути чотири пробіли, а в другому та останньому рядку є пробіл, який не може бути відображений у розмітці. Для уточнення:
$ examplelang program < program > rotProg
$ examplelang rotProg < rotProg > program1
$ diff -s program program1
Files program and program1 are identical
Найкоротша програма виграє. Стандартні лазівки заборонені.
:.+
можна розбити кілька рядків?