Memasukkan:
Sebuah benang
Keluaran:
1) Pertama-tama kita ambil karakter hapus pada akhir input-string sampai kita dibiarkan dengan panjang yang persegi (yaitu 1, 4, 9, 16, 25, 36, dll.)
Jadi abcdefghijklmnopqrstuvwxyz(panjang 26) menjadi abcdefghijklmnopqrstuvwxy( panjang 25).
2) Lalu kita menempatkan ini dalam kotak, satu baris pada satu waktu, dari kiri ke kanan:
abcde
fghij
klmno
pqrst
uvwxy
3) Kami melipatnya di keempat arah, seperti ini (kami terus membuka sampai 'blok' terlipat tidak memiliki karakter dalam untuk dibuka lagi):
m
qrs
l n
ghi
abcde
ihgf jihg
mn lk on lm
srqp tsrq
uvwxy
qrs
l n
ghi
m
Beberapa hal yang perlu diperhatikan, ketika kita melipat ke luar, pada dasarnya kita mencerminkan seperti ini (angka ditambahkan sebagai klarifikasi, yang mewakili 'indeks' dalam contoh ini):
Ketika kami melipat sisi kiri:
123 to: 321 123
fghij ihgf j
Ketika kita melipat sisi kanan:
123 to: 123 321
fghij f jihg
Saat kami melipat ke atas:
3q
2l
1g
b to: b
1g 1
2l 2
3q 3
v v
Ketika kita melipat ke bawah:
b b
1g 1
2l 2
3q 3
v to: v
3q
2l
1g
Aturan tantangan:
- Anda dapat berasumsi bahwa input akan selalu memiliki setidaknya 1 karakter (yang juga akan menjadi output).
- Format output fleksibel, sehingga Anda dapat mencetak ke STDOUT atau STDERR; kembali sebagai string-array / daftar atau karakter 2D-array; string tunggal dengan baris baru; dll.
- Input hanya akan berisi karakter alfanumerik (
a-zA-Z0-9) - Anda juga dapat menggunakan karakter non-alfanumerik untuk mengisi spasi di dan / atau di sekitar keluaran ASCII-art, seperti titik
.. - Ruang trailing dan satu garis baru trailing adalah opsional.
- Kami terus membuka sampai blok luar yang terlipat tidak memiliki lagi pusat untuk dibuka.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, silakan tambahkan penjelasan jika perlu.
Kasus uji:
Input: abcdefghijklmnopqrstuvwxy
Output:
m
qrs
l n
ghi
abcde
ihgf jihg
mn lk on lm
srqp tsrq
uvwxy
qrs
l n
ghi
m
Input: A
Ouput:
A
Input: ThisIsATest
Output:
I
Thi
Is sI
ATe
I
Input: HowAboutAVeryLongExampleWhichIsAlsoAnEvenSquareInsteadOfOddOneAndExceeds64Chars
Output:
An
ch
xamp
i I
o E
quar
steadO
S e
s v
h s
E l
VeryLo
HowAbout
oLyreVA noLyreV
xampl Eg el Examp
hci Is hW As hi Ihc
nAo Ev sl ev so EnA
quare Sn Ie Squar
Odaetsn fOdaets
OddOneAn
steadO
S e
s v
h s
E l
VeryLo
xamp
i I
o E
quar
An
ch
Input: Lenght7
Output:
Le
ng
Input: abc
Output:
a