Introdução
O mapa de Baker é um sistema dinâmico importante que exibe comportamento caótico. É uma função do quadrado da unidade para ela própria definida intuitivamente da seguinte forma.
- Corte o quadrado verticalmente ao meio, resultando em dois retângulos de tamanho
0.5×1
. - Empilhe a metade direita na parte superior esquerda, resultando em um retângulo de tamanho
0.5×2
- Comprima o retângulo novamente em um
1×1
quadrado.
Nesse desafio, você implementará uma versão discreta dessa transformação.
Entrada e saída
Sua entrada é uma matriz 2D de caracteres ASCII imprimíveis e espaço em branco 2m×2n
para alguns m, n > 0
. Sua saída é uma matriz semelhante obtida da seguinte forma, usando a 6×4
matriz
ABCDEF
GHIJKL
MNOPQR
STUVWX
como um exemplo. Primeiro, empilhe a metade direita da matriz na parte superior esquerda:
DEF
JKL
PQR
VWX
ABC
GHI
MNO
STU
Em seguida, divida as colunas em pares de caracteres e gire cada par independentemente 90 graus no sentido horário, "compactando" o retângulo alto de volta à forma original:
JDKELF
VPWQXR
GAHBIC
SMTNUO
Esta é a saída correta para a matriz acima.
Regras
Os formatos de entrada e saída são flexíveis. Você pode usar cadeias delimitadas por nova linha, listas de cadeias ou matrizes 2D de caracteres. No entanto, a entrada e a saída devem ter exatamente o mesmo formato: você deve poder repetir o envio várias vezes em qualquer entrada válida.
Você pode escrever um programa completo ou uma função. A contagem de bytes mais baixa vence e as brechas padrão não são permitidas.
Casos de teste
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*||_ _