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*||_ _
c2k
bukanck/lk2
.c2k
membagi string menjadi dua bagian yang sama.Julia, 136 byte
Implementasi yang sangat mudah. Bukan entri yang sangat kompetitif, tapi itu menyenangkan!
Ini menciptakan fungsi lambda yang menerima array 2 dimensi sebagai input dan mengembalikan array 2 dimensi yang ditransformasikan.
Penjelasan + tidak dikumpulkan:
Untuk memanggilnya, beri nama fungsi, misalnya
f=A->(...)
.Contoh output:
Dan bukti bahwa itu bisa dirantai secara sewenang-wenang:
Saran diterima seperti biasa, dan saya akan senang memberikan penjelasan lebih lanjut.
sumber
CJam,
2524 byteImplementasi spek lurus ke depan. Penjelasan:
Cobalah online di sini
sumber
JavaScript (ES6), 104
141Edit Meninjau spesifikasi, saya menemukan bahwa jumlah baris harus genap (saya melewatkan ini sebelumnya). Jadi tidak terlalu rumit menemukan posisi sumber yang benar untuk setiap karakter dalam output dalam satu langkah.
Uji di Firefox / konsol FireBug
Keluaran
sumber
J,
4539 byteJ memiliki fungsi tessellation (potong
;.
) yang banyak membantu.sumber
Haskell,
128127 bytePenggunaan:
f ["12", "34"]
->["42","31"]
Bagaimana itu bekerja:
Sunting: @Zgarb menemukan byte untuk disimpan.
sumber
g x=x
untuk kasing daftar kosong.GNU sed -r, 179 byte
Skor termasuk +1 untuk
-r
arg to sed.Butuh beberapa saat untuk mencari tahu bagaimana melakukan ini
sed
, tapi saya pikir saya sudah memilikinya sekarang:Perhatikan bahwa spasi putih di atas harus tabkarakter tunggal . Komentar tidak termasuk dalam skor golf.
Perhatikan juga bahwa ini menggunakan
:
karakter marker secara ekstensif . Jika aliran input berisi:
, maka perilaku yang tidak ditentukan akan terjadi. Ini dapat dikurangi dengan mengganti semua:
dengan beberapa karakter non-cetak (misalnya BEL) tanpa biaya ke skor golf.Input dan output adalah daftar string yang dipisahkan tab:
sumber
J,
3332 karakterKata kerja monadik.
Penjelasan
Mari kita mulai dengan mendefinisikan
Y
sebagai input sampel kami.Bagian pertama (
-:@#@{. (}. ,. {.) |:
) terbelahY
dua dan menambahkan kemudian berakhir:Di bagian kedua (
_2 |.\"1
) kami membaginya menjadi pasangan dua dan membalikkannya:Akhirnya (
0 2 ,.@|:
), kami memindahkan matriks sesuai kebutuhan dan membuang sumbu trailing:Seluruh ekspresi dengan spasi putih dimasukkan:
Dan sebagai kata kerja eksplisit:
sumber