Substitua uma string por ela mesma
Seu objetivo é substituir uma string por ela mesma, substituindo cada caractere na string original pelo anterior, começando pelo primeiro caractere e contornando-o. Aqui estão alguns exemplos para mostrar o que quero dizer:
1º exemplo:
Input: program
Output: apgopra
How:
Program -> mrogram (replace p by m in program)
-> mpogpam (replace r by p in mrogram)
-> mprgpam (replace o by r in mpogpam)
-> mpropam (replace g by o in mprgpam)
-> mpgopam (replace r by g in mpropam)
-> mpgoprm (replace a by r in mpgopam)
-> apgopra (replace m by a in mpgoprm)
Segundo exemplo:
Input: robot
Output: orbro
How:
Robot -> tobot (replace r by t in robot)
-> trbrt (replace o by r in tobot)
-> trort (replace b by o in trbrt)
-> trbrt (replace o by b in trort)
-> orbro (replace t by o in trbrt)
Terceiro exemplo:
Input: x
Output: x
How:
x -> x (replace x by x in x)
Quarto exemplo:
Input: xy
Output: xx
How:
xy -> yy (replace x by y in xy)
-> xx (replace y by x in yy)
Sidenotes:
- A sequência
x
conterá apenas caracteres alfanuméricos e espaços em minúsculas - Este é o código-golfe, pelo que o código mais curto em bytes vence!
Respostas:
CJam, 11 bytes
Teste aqui.
Explicação
fonte
TeaScript , 17 bytes
192124TeaScript é JavaScript para jogar golfe
Agradável e curto
Experimente online (observe os espaços em branco à direita na entrada)
Ungolfed & Explicação
fonte
JavaScript ES6, 69 bytes
Mostrar snippet de código
fonte
F=
contagem de bytes.s.slice(i-1)[0]
não é igual as.slice(i-1,i)
?i=0
Rubi,
50.48 bytesTeste:
fonte
Mathematica,
89757457 bytesfonte
""<>Fold[#/.#2&,c=Characters@#,Thread[c->RotateRight@c]]&
Transpose
e falhou.Pitão, 13 bytes
Experimente online. Suíte de teste.
fonte
k2 - 17 car
Função tendo 1 argumento.
k2 tem um builtin chamado
_ssr
de S tring S earch e R moran Jr.._ssr[x;y;z]
vai encontrary
nox
e substituí-loz
. Então, usamos/
para dobrar essa funcionalidade sobre cada substituição que queremos fazer. Para aqueles que não estão familiarizados com a dobragem (como na programação funcional), basicamente_ssr/[x; (y1; y2; y3); (z1; z2; z3)]
se torna_ssr[_ssr[_ssr[x; y1; z1]; y2; z2]; y3; z3]
. Strings são listas de seus caracteres, portanto, podemos simplesmente girar a entrada de volta um passo, obter as substituições e conectar.fonte
Haskell, 76 bytes
Pena, Haskell nem sequer tem uma função de substituição embutida.
fonte
PHP, 76 bytes
Aqui está a versão não destruída:
fonte
Python,
67646257 bytesSolução simples, vai procurar algo para encurtar isso. Obrigado a @RandyC por salvar 5 bytes.
A entrada deve estar entre aspas.
fonte
[:-1]
zip truncado para o menor iterável.Haskell, 58 bytes
Bem parecido com a solução de Christian, mas usar
map
e o fato dezip
ignorar elementos supérfluos se as listas tiverem comprimento desigual. Ele se dobra na lista de substituições (no formulário(from,to)
), atualizando a sequência mapeando a função de substituição escrita à mãor
em cada letra.A expressão
flip$map.r
foi derivada usando o plug-in "Pointless" do LambdaBot.fonte