Göndermeden Sandbox burada .
Bir dizeyi "Springified" yapan bir işlev veya program oluşturun.
- Giriş, Stdin'de bir Dize veya en yakın alternatif olacaktır
- Giriş yalnızca yazdırılabilir ASCII ve / veya boşluklar içerecektir
- Çıktı Stdout veya en yakın alternatif olacaktır
- Sondaki satırlar ve boşluklar kabul edilebilir
Bir String nasıl yayılır
- String'i gerektiği kadar ASCII yay bobinine formatlayın
- Bobinleri en yakın bobine kadar boşluklarla doldurun
- Bobinlerin etrafındaki yayı takip ederek karakterleri okuyun
Bu bir ASCII yay bobini:
#
# ####
# #
# ####
#
Burada #s dizgenin karakterleri
İşte bir örnek:
abcdefghijklmnopqrstuvwxyz
olur
a
b cdef
g h
i jklm
n
o
p qrst
u v
w xyz.
.
Burada .görünürlük için boşlukların yerini alır.
Daha sonra, ASCII yayı aşağı doğru, ilmeklerin etrafında gve uiki kez vurularak dize geri okunur :
1| a <-3
V b cdef
g h
4| i jklm
V n 2->
...
... vererek:
abgjklmhfedcginopuxyz vtsrquw (sondaki boşluk ile)
Test Durumları
(sondaki boşlukları vurgulamak için teklifler eklendi - lütfen ES cinsinden yoksay)
I: "abcdefghijklmnopqrstuvwxyz"
O: "abgjklmhfedcginopuxyz vtsrquw "
I: "!@#"
O: "!@ # "
I: ""
O: ""
I: "12345 67890"
O: "12690 7 54368 "
I: " "
O: " "
Çıkış uzunluğunun her zaman 15'in bir katı olduğunu, bir yay bobininin uzunluğuna dikkat edin
Bu kod golf , bu yüzden bayttaki en kısa cevap kazanır.

Ana döngü, oyun alanının sağ tarafına sarılarak sağdan sola doğru yürütülmeye başlar. Burası stdin'in ilk karakterini okuduğumuz ve bir EOF olup olmadığını sonlandırdığımız yerdir.
Sonraki bölüm, herhangi bir EOF karakterinin formül kullanılarak boşluklara dönüştürülmesini sağlar
Karakterin bir kopyası geçici belleğe kaydedilir ve daha sonra
, karakterin çıktısının alınıp alınmayacağını belirlemek için dördüncü satırdaki tabloda geçerli dizinin aranması gerçekleştirilir .
Karakterin çıktısının alınması gerekiyorsa, sol dalı alırız. Daha sonra gerçekleşecek olan takas işlemini iptal etmek için burada bir takas yapılır ve ardından dalı sağa zorlamak için bir sıfır itilir.
Karakter çıktı alınmamışsa, indeks sayacının altındaki yığını aşağı kaydırırız (bu sol dalda iptal edilen takastır). Ve her iki durumda da karakteri geçerli dizin ofsetinde belleğe kaydeder, dizini artırır ve 13'ten büyük olup olmadığını kontrol
ederiz . Değilse, stdin'den sonraki karakteri okur ve iç döngüyü tekrarlarız.
Eğer öyleyse, 7 çıktı (