Faça um programa que use a palavra que você digitou e adicione essa palavra à parte de trás de si menos sua primeira letra e depois repita até que todas as letras se esgotem. Por exemplo, cat
se tornaria catatt
, e hello
se tornaria helloellolloloo
.
Insira
qualquer uma das 26 letras do alfabeto inglês. Pode haver várias palavras separadas por espaços, e a alteração deve ser aplicada a cada palavra.
Saída
A (s) palavra (s) inserida (s), com cada palavra colocada depois de si mesma com a primeira letra faltando e, em seguida, com a segunda letra faltando, e assim por diante até que não haja mais letras a serem adicionadas.
Mais exemplos:
ill eel
saídas illlll eelell
laser bat
saídas laserasersererr batatt
darth vader
saídas dartharthrththh vaderaderdererr
Isso é código de golfe, então o código mais curto vence.
Esclarecimento:
Você pode tratar a entrada ou saída como uma lista. Você pode separar palavras usando nova linha em vez de espaço. Você pode adicionar um espaço à direita na entrada.
1.
Atualize as especificações com as novas permissões (E / S da matriz, espaço à esquerda, etc.).2.
Informe as soluções existentes, caso alguém possa salvar bytes aproveitando-as.Respostas:
Japonês
-m
,63 bytesEntrada e saída são matrizes de palavras.
Tente
Explicação
fonte
£
dois bytes em UTF-8?brainfuck ,
6056 bytesExperimente online!
Requer um espaço à direita e imprime um espaço à esquerda. Ambos podem ser contornados, mas isso acaba em 112 bytes .
Explicação
fonte
Haskell,
3621 bytesExperimente online!
Editar: -15 bytes, devido ao novo formato IO (lista de palavras em vez de palavras separadas por espaço)
fonte
scanr (:) ""
portails
.import Data.List
que adicionasse 17 bytes à pontuação.Perl
-p
,362523 bytesExperimente online!
Este é um único regsub. Primeiro, ele corresponde a todos os limites de palavras ou caracteres não espaciais:
Observe que cada uma dessas correspondências deve ser substituída pelo restante da palavra:
Podemos fazer isso com a variável especial
$'
, que armazena a parte da sequência após a partida. No entanto, precisamos aplicar o regsub aninhados/ .*//
a ele, que remove tudo após o primeiro espaço$'
, para se livrar das palavras restantes na entrada.Obrigado a @nwellnhof por 2 bytes.
fonte
[^ ]
por\S
.Python 3 , 49 bytes
Experimente Online!
Isso tira proveito do fato de que
"".split()
retorna uma matriz vazia para que atue como a verificação do caso base na recursão.fonte
Geléia , 3 bytes
Experimente online!
Não
K
é mais necessário s, já que a entrada / saída da matriz agora é permitida.fonte
ḊƬẎ)
(ouḊƬF)
, se preferir).APL (Dyalog),
199 bytes{⌽∊,\⌽⍵}¨
graças a @ H.PWiz por movimentar meu cérebro
Isso funciona porque todas as seqüências de caracteres no APL são matrizes de caracteres.
TIO
fonte
JavaScript (ES6), 33 bytes
Guardado 1 byte graças a @ShieruAsakoto
Formato de E / S: matriz de palavras.
Experimente online!
JavaScript (ES6), 35 bytes
Formato de E / S: matriz de palavras.
Experimente online!
fonte
s=>s.replace(/\S+/g,g=s=>s&&s+g(s.slice(1)))
$'
(ou$<backtick>
).R ,
827567 bytesExperimente online!
Vários bytes salvos graças ao JayCe
Separa a saída com novas linhas.
A
sapply(...)
expressão gera um vetor de matriz / coluna das substrings apropriadas, preenchendo""
conforme necessário.write
depois imprime os elementos da matriz,y
por linha, separando-os com""
.fonte
...substring,1:1e6,1e6)...
ou similarbrainfuck ,
9493 bytesExperimente online!
.[-]>[.>]<[<]>
para[.>]<[<]>[-]>
.Explicação
Experimente online!
Atribuição
A coleção constante do cérebro de Esolang foi usada para a carga espacial inicial.
fonte
05AB1E , 5 bytes
Experimente online!
Explicação
fonte
í€ηJí
(como o prefixo é um byte embutido em vez de 2 bytes como sufixos; ainda requer um reverso adicional cada no entanto no início, portanto, a contagem de bytes permanece 5).Vim , 47 bytes (38 pressionamentos de tecla)
Comece com sua entrada como a única linha em um buffer do Vim.
Explicação
Isso coloca cada palavra em sua própria linha, itera sobre cada linha e depois se junta a todas. Quebra se as palavras tiverem mais de 99 caracteres ou se sua entrada tiver mais de 99 palavras.
:s/<Space>/\r/g<CR>
substitui espaços por novas linhas (\r
)gg
posiciona o cursor no início da primeira linhaqa
começa a gravar a macro a :yw
puxa o resto da palavraP
coloca atrás do cursorlx
remove a primeira letra da última palavraq
pára de gravar a macro aqb
começa a gravar a macro b :99@a
executa macro um noventa e nove vezes (introduz o limite de caracteres)j0
posiciona o cursor no início da próxima linhaq
para de gravar a macro b99@b
executa a macro b noventa e nove vezes (introduz o limite de palavras)gg
posiciona o cursor na primeira linha99J
une as seguintes noventa e nove linhas com espaços (limite de palavras novamente)Por mais 2 bytes (2 pressionamentos de tecla), você pode estender o limite de palavras para 999. Outros 4 bytes, 9999, etc.
fonte
Casca ,
64 bytes-2 bytes graças a Jonathan Allan (tomando a entrada como uma lista)!
Experimente online!
Explicação
Recebe a entrada como uma lista de cadeias e mapeia a seguinte função:
fonte
Retina 0.8.2 , 15 bytes
Experimente online! Nota: espaços à direita. Explicação:
Dividir em espaços.
Anexe seu sufixo a cada letra. Os
%
meios que obtemos apenas o sufixo da palavra.Junte-se a espaços.
fonte
Pepe ,
167153 bytesExperimente online!
fonte
Código de montagem x86 de 16 bits, 24 bytes
Chame com si = ponteiro para a string de origem, di = ponteiro para o buffer de saída.
A cadeia de origem requer um byte zero para finalizá-la.
O código é o mesmo em 16 ou 32 ou 64 bits (si / di se torna esi / edi ou rsi / rdi).
O código de 32 bits é dois bytes maior por causa da chamada expandida.
O código de 64 bits ainda é três bytes maior porque o inc / dec de rsi / rdi atrai um prefixo (mas se for sabido que eles estão no espaço de memória de 32 bits, eles podem ser esi / edi novamente para evitar essa penalidade) .
fonte
MATL ,
1816 bytesEntrada é uma matriz de células de palavras. Experimente online!
Explicação
fonte
K4 / K (oK) , 9 bytes
Solução:
Experimente online!
Explicação:
fonte
C ++ (clang) , 174 bytes
Experimente online!
É a minha primeira submissão, e eu não sabia se retornar a string em vez de imprimir está ok :)
fonte
return w!=""?
pode serreturn""!=w?
.Stax , 3 bytes
Execute e depure
Explicação:
fonte
Carvão , 14 bytes
Experimente online! Nota: Espaço à direita. Link é a versão detalhada do código. Explicação:
fonte
C (gcc) , 79 bytes
Experimente online!
fonte
Pip
-s
, 11 bytesRetorna a lista de palavras separadas por espaço de stdin. Experimente online!
Explicação
fonte
Ruby , 42 bytes
Experimente online!
fonte
Python 2 , 63 bytes
Experimente online!
fonte
Tela , 6 bytes
Experimente aqui!
5 bytes com um formato de saída louco
fonte
C #,
11190 bytesExperimente Online!
Alterando entrada e saída para matrizes, salvei alguns bytes:
Experimente Online!
fonte
K (oK) ,
1713 bytesExperimente online!
Prefixar função anônima; A entrada é tomada como uma lista de cadeias, que por sua vez são listas de caracteres.
Obrigado @streetster por 4 bytes.
Como:
fonte
{|,/,\|x}'
Lisp comum , 179 bytes
Experimente online!
Esta é a minha primeira tentativa de jogar golfe.
fonte
car
vez defirst
e emcdr
vez derest
aumentar ainda mais sua submissão.Lua , 70 bytes
Experimente online!
Explicação
Os argumentos em Lua são armazenados na tabela
arg
iniciando no índice 1. O operador unário#
retorna o tamanho da tabela e a funçãos:sub(a,b)
retorna uma substring baseada na sequências
delimitada por números inteirosa
eb
, se b não for passado, retornará o restante da sequência.Eu tive que usar em
io.write()
vez deprint()
evitar quebras de linha e adicioneiprint()
no final pelo motivo oposto.fonte