Posting kotak pasir di sini .
Buat fungsi atau program yang "Springify" string.
- Input akan berupa String di Stdin, atau alternatif terdekat
- Input hanya akan berisi ASCII dan / atau spasi yang dapat dicetak
- Output akan ke Stdout, atau alternatif terdekat
- Newline dan spasi tambahan dapat diterima
Bagaimana cara membuat String
- Memformat String menjadi gulungan pegas ASCII sebanyak yang diperlukan
- Pad kumparan dengan spasi, hingga kumparan terdekat
- Bacakan karakter, mengikuti pegas di sekitar gulungan
Ini adalah pegas ASCII:
#
# ####
# #
# ####
#
Di mana #s adalah karakter dari String
Berikut ini sebuah contoh:
abcdefghijklmnopqrstuvwxyz
menjadi
a
b cdef
g h
i jklm
n
o
p qrst
u v
w xyz.
.
Di mana .s mengganti ruang untuk visibilitas.
Kemudian, string dibaca kembali, mengikuti pegas ASCII ke bawah, di sekitar loop, memukul gdan udua kali:
1| a <-3
V b cdef
g h
4| i jklm
V n 2->
...
...memberi:
abgjklmhfedcginopuxyz vtsrquw (dengan ruang tambahan)
Uji Kasus
(kutipan ditambahkan untuk menyoroti spasi tambahan - harap diabaikan dalam hal IO)
I: "abcdefghijklmnopqrstuvwxyz"
O: "abgjklmhfedcginopuxyz vtsrquw "
I: "!@#"
O: "!@ # "
I: ""
O: ""
I: "12345 67890"
O: "12690 7 54368 "
I: " "
O: " "
Perhatikan bahwa panjang output selalu kelipatan 15, panjang pegas
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.

Loop utama dimulai dari mengeksekusi kanan ke kiri, membungkus di sebelah kanan playfield. Di sinilah kita membaca karakter pertama dari stdin, dan mengakhiri jika itu EOF.
Bagian selanjutnya memastikan setiap karakter EOF dikonversi ke spasi menggunakan rumus
Salinan karakter disimpan ke memori sementara, dan kemudian pencarian indeks saat ini dilakukan pada tabel di baris empat (
) untuk menentukan apakah karakter tersebut akan dihasilkan atau tidak.
Jika karakter perlu di-output, kita ambil cabang kiri. Swap dilakukan di sini untuk membatalkan swap yang akan terjadi selanjutnya, dan kemudian nol didorong untuk memaksa cabang kanan.
Jika karakter tidak dihasilkan, kami menukarnya dengan tumpukan di bawah penghitung indeks (ini adalah swap yang dibatalkan di cabang kiri). Dan dalam kedua kasus kami menyimpan karakter ke memori pada offset indeks saat ini, menambah indeks, dan memeriksa apakah itu lebih besar dari 13.
Jika tidak, kami membaca karakter berikutnya dari stdin dan ulangi loop dalam.
Jika ya, kita akan menyelesaikan set 14 karakter, 7 telah menjadi output (