Пісочниця тут .
Створіть функцію або програму, яка "Springifies" рядок.
- Вхід буде рядком у Стдіні або найближчою альтернативою
- Вхід буде містити лише друковані ASCII та / або пробіли
- Вихід буде для Stdout або найближчої альтернативи
- Додаткові нові рядки та пробіли є прийнятними
Як узагальнити струну
- Відформатуйте String у стільки ASCII пружинних котушок, скільки потрібно
- Прокладіть котушки з пробілами, аж до найближчої котушки
- Прочитайте персонажів, слідуючи за пружиною навколо котушок
Це пружинна котушка ASCII:
#
# ####
# #
# ####
#
Де #s - символи рядка
Ось приклад:
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 виведено (