Desafío:
Lea la entrada (dentro del rango ASCII visible) y la salida con algunas modificaciones:
- En cada conjunto de 10 caracteres de la entrada aleatoriamente (50/50):
- reemplazar un carácter * (con uno aleatorio ** dentro del rango ASCII visible) (por ejemplo, se
lumberjack
convierte enlumbeZjack
) - o eliminar un personaje (ej. se
lumberjack
conviertelmberjack
)
- reemplazar un carácter * (con uno aleatorio ** dentro del rango ASCII visible) (por ejemplo, se
* Si el conjunto tiene menos de 10 caracteres, no tiene que modificarlo, pero puede hacerlo.
** El carácter puede ser el mismo que el de una entrada, siempre que sea aleatorio.
Ejemplo:
Entrada: Go home cat! You're drunk!
Salida: Go hom cat! YouLre drunk!
(solo un ejemplo, ya que la salida podría ser aleatoria, no la use como caso de prueba)
Reglas:
- código-golf , gana menos personajes!
Respuestas:
Pyth,
2725 bytesConjunto de pruebas disponible aquí.
Gracias a Maltysen por reducir 2 bytes.
Explicación
Como suele ser el caso, creo que este es un método un poco ingenuo y puede mejorarse. Por lo general, encuentro algo obvio mientras escribo la explicación, pero nada me llamó la atención esta vez.
fuente
OC\¾
es la misma cantidad de bytes queO190
, y asignar K al borrado de caracteres tampoco ahorra espacio.*> <> ,
44465250 bytesPruébalo aquí!
Esto utiliza cualquier carácter ascii cerca / encima del espacio para los caracteres aleatorios. Esto siempre edita el sexto carácter, a menos que sea el final de una cadena y la longitud de esa cadena no sea múltiplo de 10. Esto tiene un 50% de posibilidades de eliminar el séptimo carácter en lugar de editar el sexto.
Entrada
Salida
Editar:
esta respuesta probablemente no siempre está en el rango de ascii visible, edición ...Corregido.Edit2:
No vi que debe haber una posibilidad de 50/50 para eliminar un personaje, editando de nuevo ...Creo que todo está en orden ahora :).fuente
Perl 6 ,
7867 bytesIntentalo
Explicación:
fuente
Pyth - 21 bytes
Pruébelo en línea aquí .
fuente
Python 3 , 75 bytes
El byte de 75 aplica la transformación al primer carácter de cada grupo, y solo elige entre 2 caracteres aleatorios, como en la respuesta Jelly (que OP permitió):
Pruébalo en línea!
Esta es una función recursiva que, cada iteración, no antepone nada
'a'
, o'b'
, y luego se llama a sí misma con los primeros 10 caracteres cortados. La iteración final corta los circuitos ens and
(una cadena vacía es falsa), evitando una recursión infinita.El resultado de todas las llamadas separadas se concatena y se devuelve al contexto que llamó a la función.
120 bytes
Por supuesto, eso se siente un poco como hacer trampa, así que aquí hay uno que es completamente al azar:
Pruébalo en línea!
fuente
Gelatina ,
15 1413 bytes 13 caracteresTryItOnline!
Reemplaza o elimina el primero de cada diez caracteres, incluido el de los últimos 1-9, si existe tal fragmento. Elige a partir de la, sin duda pequeña, subconjunto de caracteres:
1
;2
.¿Cómo?
Para elegir entre todos los ASCII imprimibles en lugar de solo
1
y2
(aún reemplazando o eliminando el primer carácter de cada fragmento) en 21 bytes:Para una versión completamente aleatoria (50/50 eliminar / reemplazar, ASCII imprimible aleatorio uniforme y una ubicación de caracteres uniformemente aleatoria dentro de cada fragmento) tengo 30 bytes (probablemente no óptimos):
Esto gira cada fragmento a la izquierda en una cantidad aleatoria, saca el último carácter y luego llama a uno aleatorio de los primeros dos enlaces, uno de los cuales está vacío y el otro que se concatena con un carácter ASCII imprimible aleatorio; luego gira el trozo hacia la derecha nuevamente.
fuente
Python3,
188186184114 caracteresParece demasiado largo Probablemente podría acortarse mucho con una lambda.Aparentemente, el OP ha permitido elegir el carácter aleatorio de una lista de dos caracteres y el índice del carácter a reemplazar puede ser una constante. Después de las modificaciones, mi respuesta habría sido exactamente igual a @FlipTacks Python, por lo que este es el formulario con el que me quedo.
¡@FlipTack ahorró 5 bytes!
fuente
Clojure,
135139 bytesEditar: Olvidé usar en
partition-all
lugar departition
.Sin golf:
Hombre, esos nombres de funciones son largos ... De todos modos, divide la entrada en particiones de 10 caracteres, los divide en un punto aleatorio en dos mitades, inyecta aleatoriamente una cadena vacía o un carácter aleatorio entre ellos y descarta el primer carácter de la segunda mitad.
fuente
Mathematica 133 Bytes (129 caracteres)
76 caracteres para escribir los nombres de 8 funciones: /
Usando el en
⌊..⌋
lugar deFloor[]
ahorra 5 caracteres, 1 byte.fuente
Python 3, 129 bytes
Para guardar algunos bytes, en lugar de importar el módulo aleatorio de Python, simplemente realicé algunas operaciones de módulo en la identificación de la cadena, que debería ser diferente cada vez. Por ejemplo, el programa decidirá si eliminar o no un carácter o reemplazar uno en función de si
id(string)//10
es par (o entero, dividir por 10 ya que el último dígito siempre será par).fuente