Sandbox postar aqui .
Crie uma função ou programa que "Springifica" uma seqüência de caracteres.
- A entrada será uma String em Stdin, ou a alternativa mais próxima
- A entrada conterá apenas ASCII e / ou espaços imprimíveis
- A saída será para Stdout, ou a alternativa mais próxima
- Novas linhas e espaços à direita são aceitáveis
Como springify uma String
- Formate o String em quantas bobinas de mola ASCII forem necessárias
- Preencher as bobinas com espaços, até a bobina mais próxima
- Leia os caracteres, seguindo a mola ao redor das bobinas
Esta é uma bobina de mola ASCII:
#
# ####
# #
# ####
#
Onde #s são os caracteres da String
Aqui está um exemplo:
abcdefghijklmnopqrstuvwxyz
torna-se
a
b cdef
g h
i jklm
n
o
p qrst
u v
w xyz.
.
Onde eles .substituem espaços para visibilidade.
Em seguida, a string é lida novamente, seguindo a mola ASCII para baixo, ao redor dos loops, pressionando a tecla ge uduas vezes:
1| a <-3
V b cdef
g h
4| i jklm
V n 2->
...
... dando:
abgjklmhfedcginopuxyz vtsrquw (com um espaço à direita)
Casos de teste
(cotações adicionadas para destacar espaços à direita - ignore em termos de IO)
I: "abcdefghijklmnopqrstuvwxyz"
O: "abgjklmhfedcginopuxyz vtsrquw "
I: "!@#"
O: "!@ # "
I: ""
O: ""
I: "12345 67890"
O: "12690 7 54368 "
I: " "
O: " "
Observe que o comprimento de saída é sempre um múltiplo de 15, o comprimento de uma bobina de mola
Isso é código-golfe , então a resposta mais curta em bytes vence.

O loop principal inicia a execução da direita para a esquerda, envolvendo o lado direito do campo de jogo. É aqui que lemos o primeiro caractere de stdin e terminamos se for um EOF.
A próxima seção garante que quaisquer caracteres EOF sejam convertidos em espaços usando a fórmula
Uma cópia do caractere é salva na memória temporária e, em seguida, é executada uma pesquisa no índice atual na tabela da linha quatro (
) para determinar se o caractere deve ser produzido ou não.
Se o caractere precisar ser produzido, pegamos o ramo esquerdo. Uma troca é realizada aqui para cancelar a troca que ocorrerá a seguir e, em seguida, um zero é pressionado para forçar a ramificação da direita.
Se o caractere não foi emitido, nós o trocamos pela pilha abaixo do contador do índice (este é o swap que é cancelado no ramo esquerdo). Nos dois casos, salvamos o caractere na memória no deslocamento atual do índice, incrementamos o índice e verificamos se ele é maior que 13.
Caso contrário, lemos o próximo caractere do stdin e repetimos o loop interno.
Se for, teremos terminado um conjunto de 14 caracteres, 7 sendo produzidos (