Sustituir una cadena consigo mismo
Su objetivo es sustituir una cadena por sí misma reemplazando cada carácter de la cadena original con el anterior, comenzando con el primer carácter y terminando. Aquí hay algunos ejemplos para mostrar lo que quiero decir:
1er ejemplo:
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)
2do ejemplo:
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)
3er ejemplo:
Input: x
Output: x
How:
x -> x (replace x by x in x)
4to ejemplo:
Input: xy
Output: xx
How:
xy -> yy (replace x by y in xy)
-> xx (replace y by x in yy)
Notas al margen:
- La cadena
x
solo contendrá caracteres alfanuméricos en minúscula y espacios - Este es el código de golf, ¡el código más corto en bytes gana!
Respuestas:
CJam, 11 bytes
Pruébalo aquí.
Explicación
fuente
TeaScript , 17 bytes
192124TeaScript es JavaScript para jugar al golf
Agradable y corto
Pruébelo en línea (observe los espacios en blanco finales en la entrada)
Sin Golf y Explicación
fuente
JavaScript ES6, 69 bytes
Mostrar fragmento de código
fuente
F=
recuento de bytes.s.slice(i-1)[0]
no es igual as.slice(i-1,i)
?i=0
Rubí,
5048 bytesPrueba:
fuente
Mathematica,
89757457 bytesfuente
""<>Fold[#/.#2&,c=Characters@#,Thread[c->RotateRight@c]]&
Transpose
y fallé.Pyth, 13 bytes
Pruébalo en línea. Banco de pruebas.
fuente
k2 - 17 caracteres
Función tomando 1 argumento.
k2 tiene una orden interna del llamado
_ssr
para S Tring S earch y R eplace._ssr[x;y;z]
encontrarány
enx
y sustituirla porz
. Así que usamos/
para plegar esta funcionalidad sobre cada reemplazo que queremos hacer. Para aquellos que no están familiarizados con el plegado (como en la programación funcional), esencialmente se_ssr/[x; (y1; y2; y3); (z1; z2; z3)]
convierte_ssr[_ssr[_ssr[x; y1; z1]; y2; z2]; y3; z3]
. Las cadenas son listas de sus caracteres, por lo que simplemente podemos girar la entrada un paso atrás y obtener los reemplazos, y enchufarlos.fuente
Haskell, 76 bytes
Lástima, Haskell ni siquiera tiene una función de sustitución incorporada.
fuente
PHP, 76 bytes
Aquí está la versión sin golf:
fuente
Python,
67646257 BytesSolución directa, buscará algo para acortar esto. Gracias a @RandyC por guardar 5 bytes.
La entrada debe estar entre comillas.
fuente
[:-1]
zip ya que se trunca al iterable más corto.Haskell, 58 bytes
Bastante similar a la solución de Christian, pero usando
map
y el hecho de quezip
ignora elementos superfluos si las listas son de longitud desigual. Se pliega a través de la lista de reemplazos (en el formulario(from,to)
), actualizando la cadena mapeando la función de reemplazo escrita a manor
en cada letra.La expresión
flip$map.r
se derivó utilizando el complemento "Pointless" de LambdaBot.fuente