สร้างฟังก์ชั่นหรือโปรแกรมที่ "สตริง" สปริง
- อินพุตจะเป็นสตริงใน Stdin หรือเป็นทางเลือกที่ใกล้เคียงที่สุด
- ข้อมูลที่ป้อนจะมีเฉพาะ ASCII ที่พิมพ์ได้และ / หรือช่องว่าง
- เอาต์พุตจะเป็น Stdout หรือเป็นทางเลือกที่ใกล้เคียงที่สุด
- ขึ้นบรรทัดใหม่และช่องว่างต่อท้ายเป็นที่ยอมรับ
วิธีการทำให้สตริงเป็นสปริง
- จัดรูปแบบ String ให้เป็นคอยล์สปริง ASCII ได้มากเท่าที่ต้องการ
- ผัดคอยส์ด้วยช่องว่างจนถึงขดลวดที่ใกล้ที่สุด
- อ่านตัวอักษรตามสปริงรอบ ๆ ขดลวด
นี่คือคอยล์สปริง ASCII:
#
# ####
# #
# ####
#
โดยที่#s เป็นตัวอักษรของ String
นี่คือตัวอย่าง:
abcdefghijklmnopqrstuvwxyz
กลายเป็น
a
b cdef
g h
i jklm
n
o
p qrst
u v
w xyz.
.
ตำแหน่งที่.s แทนที่ช่องว่างเพื่อให้มองเห็นได้
จากนั้นสตริงจะอ่านกลับมาดังต่อไปนี้ลงในฤดูใบไม้ผลิ ASCII รอบลูปตีgและuครั้งที่สอง:
1| a <-3
V b cdef
g h
4| i jklm
V n 2->
...
... การให้:
abgjklmhfedcginopuxyz vtsrquw (มีพื้นที่ต่อท้าย)
กรณีทดสอบ
(เพิ่มใบเสนอราคาเพื่อเน้นช่องว่างต่อท้าย - โปรดละเว้นในแง่ของ IO)
I: "abcdefghijklmnopqrstuvwxyz"
O: "abgjklmhfedcginopuxyz vtsrquw "
I: "!@#"
O: "!@ # "
I: ""
O: ""
I: "12345 67890"
O: "12690 7 54368 "
I: " "
O: " "
โปรดทราบว่าความยาวของเอาต์พุตมักจะเป็น 15 เท่าของความยาวของคอยล์สปริง
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ

ลูปหลักเริ่มต้นการดำเนินการจากขวาไปซ้ายล้อมรอบไปทางด้านขวาของสนามแข่งขัน นี่คือที่เราอ่านตัวอักษรตัวแรกจาก stdin และยุติถ้ามันเป็น EOF
ส่วนถัดไปจะทำให้แน่ใจว่าตัวอักษร EOF ใด ๆ
สำเนาของอักขระจะถูกบันทึกลงในหน่วยความจำชั่วคราวจากนั้นทำการค้นหาดัชนีปัจจุบันบนตารางที่บรรทัดที่สี่ (
) เพื่อตรวจสอบว่าอักขระควรถูกส่งออกหรือไม่
หากตัวละครจะต้องมีการส่งออกเราใช้สาขาซ้าย ทำการสลับที่นี่เพื่อยกเลิกการสลับที่จะเกิดขึ้นต่อไปจากนั้นจะมีการผลักศูนย์เพื่อบังคับให้สาขาถูกต้อง
หากตัวละครไม่ได้ถูกส่งออกเราจะสลับมันลงในสแต็กใต้ตัวนับดัชนี (นี่คือการสลับที่ได้รับการยกเลิกในสาขาด้านซ้าย) และในทั้งสองกรณีเราบันทึกอักขระลงในหน่วยความจำที่ออฟเซ็ตดัชนีปัจจุบันเพิ่มดัชนีและตรวจสอบว่ามันมากกว่า 13
หรือไม่ถ้าไม่ใช่เราอ่านอักขระถัดไปจาก stdin และวนซ้ำภายใน
หากเป็นเช่นนั้นเราจะเสร็จสิ้นชุดอักขระ 14 ตัว 7 ตัวถูกเอาต์พุต (