Песочница пост здесь .
Создайте функцию или программу, которая «Springizes» строку.
- Вводом будет String in Stdin или ближайшая альтернатива
- Ввод будет содержать только печатные ASCII и / или пробелы
- Вывод будет в стандартный вывод или ближайшую альтернативу
- Завершающие переводы строки и пробелы являются приемлемыми
Как пружинить строку
- Отформатируйте строку в столько пружин 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 из которых были выведены (