pengantar
Peta Baker adalah sistem dinamik penting yang menunjukkan perilaku kacau. Ini adalah fungsi dari satuan kuadrat itu sendiri yang didefinisikan secara intuitif sebagai berikut.
- Potong persegi secara vertikal menjadi dua, menghasilkan ukuran dua persegi panjang
0.5×1
. - Susun setengah kanan di atas kiri, menghasilkan satu ukuran persegi panjang
0.5×2
- Kompres persegi panjang kembali ke
1×1
kotak.
Dalam tantangan ini, Anda akan mengimplementasikan versi diskrit dari transformasi ini.
Masukan dan keluaran
Input Anda adalah array 2D karakter ASCII yang dapat dicetak dan ruang kosong ukuran 2m×2n
untuk sebagian orang m, n > 0
. Output Anda adalah array serupa yang diperoleh sebagai berikut, menggunakan 6×4
array
ABCDEF
GHIJKL
MNOPQR
STUVWX
sebagai contoh. Pertama, susun setengah kanan array di atas setengah kiri:
DEF
JKL
PQR
VWX
ABC
GHI
MNO
STU
Kemudian, pisahkan kolom menjadi pasangan karakter, dan bebaskan masing-masing pasangan 90 derajat searah jarum jam, "tekan" persegi panjang yang tinggi kembali ke bentuk aslinya:
JDKELF
VPWQXR
GAHBIC
SMTNUO
Ini adalah output yang benar untuk array di atas.
Aturan
Format input dan output fleksibel. Anda dapat menggunakan string yang dibatasi baris baru, daftar string, atau array karakter 2D. Namun, input dan output harus memiliki format yang sama persis: Anda harus dapat mengulangi kiriman Anda beberapa kali sembarang pada setiap input yang valid.
Anda dapat menulis program lengkap atau fungsi. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji Kasus
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*||_ _