Вступление
Карта Бейкера - важная динамическая система, демонстрирующая хаотическое поведение. Это функция от единичного квадрата сама по себе определяется следующим образом.
- Разрежьте квадрат пополам, получив два прямоугольника размера
0.5×1
. - Сложите правую половину сверху левой, чтобы получился прямоугольник размером
0.5×2
- Сожмите прямоугольник обратно в
1×1
квадрат.
В этом задании вы реализуете дискретную версию этого преобразования.
Вход и выход
Ваш ввод представляет собой двумерный массив печатных символов ASCII и пробел по размеру 2m×2n
для некоторых m, n > 0
. Ваш вывод представляет собой аналогичный массив, полученный следующим образом, используя 6×4
массив
ABCDEF
GHIJKL
MNOPQR
STUVWX
В качестве примера. Сначала поместите правую половину массива поверх левой половины:
DEF
JKL
PQR
VWX
ABC
GHI
MNO
STU
Затем разбейте столбцы на пары символов и независимо поверните каждую пару на 90 градусов по часовой стрелке, «сжав» высокий прямоугольник до исходной формы:
JDKELF
VPWQXR
GAHBIC
SMTNUO
Это правильный вывод для вышеуказанного массива.
правила
Форматы ввода и вывода являются гибкими. Вы можете использовать строки с разделителями новой строки, списки строк или двумерные массивы символов. Однако входные и выходные данные должны иметь одинаковый формат: вы должны иметь возможность повторять отправку произвольное количество раз на любом допустимом входе.
Вы можете написать либо полную программу, либо функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены.
Тестовые случаи
Input:
12
34
Output:
42
31
Input:
Hell
! o
d -
lroW
Output:
lol
o W-
!H e
ldr
Input:
ABCDEF
GHIJKL
MNOPQR
STUVWX
Output:
JDKELF
VPWQXR
GAHBIC
SMTNUO
Input:
*___ ___ o
o|__) |__) *
*| | o
o __ __ *
*| | _ o
o|__ |__| *
Output:
|_____) *o
|_ _ *o
||_ __| *o
o*|_____)
o* |_ _
o*||_ _