Вступ
Карта Бейкера - важлива динамічна система, яка демонструє хаотичну поведінку. Це функція від одиничного квадрата до себе, визначеного інтуїтивно, наступним чином.
- Розріжте квадрат вертикально навпіл, у результаті вийде два прямокутники розміром
0.5×1
. - Праву половину укладіть угорі зліва, в результаті вийде один прямокутник розміром
0.5×2
- Стисніть прямокутник назад в
1×1
квадрат.
У цьому виклику ви реалізуєте дискретний варіант цього перетворення.
Вхід і вихід
Ваш вхід - це 2D масив друкованих символів 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
Це правильний вихід для вищевказаного масиву.
Правила
Формати введення та виведення є гнучкими. Ви можете використовувати рядки з обмеженим рядком, списки рядків або 2D масиви символів. Однак вхід і вихід повинні мати точно той же формат: ви повинні мати можливість повторити подання довільної кількості разів на будь-якому дійсному вході.
Ви можете написати або повну програму, або функцію. Виграє найменший байт, а стандартні лазівки заборонені.
Випробування
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*||_ _