Dada uma sequência não vazia, continue removendo o primeiro e o último caracteres até chegar a um ou dois caracteres.
Por exemplo, se a string foi abcde
, seu programa deve imprimir:
abcde
bcd
c
No entanto, se fosse abcdef
, deveria parar com dois caracteres:
abcdef
bcde
cd
Novas linhas à direita e espaços à direita no final de cada linha são opcionais. Você pode ter quantos quiser ou nenhum.
Casos de teste
ABCDEFGHIJKLMNOPQRSTUVWXYZ -> ABCDEFGHIJKLMNOPQRSTUVWXYZ
BCDEFGHIJKLMNOPQRSTUVWXY
CDEFGHIJKLMNOPQRSTUVWX
DEFGHIJKLMNOPQRSTUVW
EFGHIJKLMNOPQRSTUV
FGHIJKLMNOPQRSTU
GHIJKLMNOPQRST
HIJKLMNOPQRS
IJKLMNOPQR
JKLMNOPQ
KLMNOP
LMNO
MN
ABCDEFGHIJKLMNOPQRSTUVWXYZ! -> ABCDEFGHIJKLMNOPQRSTUVWXYZ!
BCDEFGHIJKLMNOPQRSTUVWXYZ
CDEFGHIJKLMNOPQRSTUVWXY
DEFGHIJKLMNOPQRSTUVWX
EFGHIJKLMNOPQRSTUVW
FGHIJKLMNOPQRSTUV
GHIJKLMNOPQRSTU
HIJKLMNOPQRST
IJKLMNOPQRS
JKLMNOPQR
KLMNOPQ
LMNOP
MNO
N
A -> A
AB -> AB
Lembre-se de que isso é código-golfe , portanto o código com o menor número de bytes vence.
Respostas:
V , 10 bytes
Experimente online!
Explicação:
fonte
Python, 45 bytes
Emite recursivamente a string, além de uma nova linha, além dos espaços iniciais para a próxima linha, mais o resultado recursivo da string encurtada com um espaço extra no prefixo.
Se uma nova linha principal fosse permitida, poderíamos salvar um byte:
Compare com um programa (49 bytes em Python 2):
fonte
ES6 (Javascript),
47,48., 43 bytesEDIT: operador ternário substituído por &&, sequência de preenchimento prefixada pela nova linha. Obrigado @ Neil por um excelente conselho!
EDIT: incluiu o nome da função para a chamada recursiva, retirou um byte usando uma nova linha literal
Golfe
Teste
fonte
p
igual a uma nova linha e um espaço; talvez isso possa ajudá-lo também.s&&
vez des?...:''
.Python 2, 50 bytes
Função recursiva simples que continua encurtando a string até que ela desapareça.
Chamar como f ('string')
Resultado
fonte
Perl, 31 bytes
30 bytes de código +
-p
sinalizador.Para executá-lo:
Explicações : O
\S
e.$
corresponde ao primeiro e último caractere,(.+)
ao meio e( *)
aos espaços à direita que são adicionados toda vez que removemos um caractere desde o início. Portanto, o regex remove um caractere do início, um do final e adiciona um espaço inicial de cada vez.fonte
Brainfuck , 67 bytes
Isso deve funcionar em todos os sabores do cérebro.
Experimente online!
Código não destruído:
Ainda deve haver alguns bytes para cortar aqui; Só recentemente comecei a usar brainfuck, então meu movimento do ponteiro é provavelmente muito ineficiente.
fonte
MATL , 9 bytes
Isso produz espaços à direita e novas linhas.
Experimente online!
Explicação
fonte
Lote, 92 bytes
Recebe entrada em STDIN.
fonte
C, 73 bytes
Ungolfed:
Uso:
fonte
05AB1E , 8 bytes
Código:
Explicação:
Usa a codificação CP-1252 . Experimente online!
fonte
Pyke, 10 bytes
Experimente aqui!
fonte
Haskell,
4743 bytesExperimente em Ideone . Saída é uma lista de cadeias que foi permitida nos comentários do desafio. Para imprimir, execute com em
(putStr.unlines.f)
vez de apenasf
.Editar: salvou 4 bytes depois de perceber que o espaço em branco à direita é permitido.
fonte
Perl 6 , 42 bytes
Expandido:
fonte
GNU sed 24 Bytes
Inclui +2 para
-rn
Imprime, substitui o primeiro caractere não espacial por um espaço e exclui o último caractere até que nada mude.
fonte
Retina , 17 bytes
Experimente online!
fonte
C ++ 14, 117 bytes
Assume que a entrada
s
é astd::string
e retorna o texto animado.Ungolfed:
Uso:
fonte
Vim - 14 pressionamentos de tecla
Explicação:
O Vim mata automaticamente a macro assim que ficarmos sem caracteres
fonte
Snap! - 16 blocos
A saída é autocentrante. A 'espera' é para os humanos.
fonte
PHP, 91 bytes
Uso: salve em um arquivo e ligue no navegador:
fonte
Mathematica, 71 bytes
fonte