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