Tengo un problema con mi teclado (lo más probable es que sea un problema con mi navegador). Algunas veces, cuando hago clic en un nuevo campo de texto y empiezo a escribir, todo mi texto sale al revés. Después de un período de tiempo muy corto (para el desafío, diremos que son 10 milisegundos), se reanuda la escritura hacia adelante nuevamente. Parece que al principio mi cursor no se mueve cuando empiezo a escribir, por lo que todas las letras se insertan al comienzo del campo de texto.
Por ejemplo, si estaba escribiendo python
y escribí pyt
en los primeros 10 milisegundos, el resultado sería
hontyp
Tarea
Su trabajo es simular este comportamiento en la menor cantidad de bytes posible.
Entrada
Puede tomar aportes en cualquier método razonable. Sin embargo, no puede tomar la entrada como dos campos separados. El retraso de 10 milisegundos debe comenzar cuando el programa comienza a permitir la entrada. Es posible que tenga que realizar un preprocesamiento antes de permitir la entrada, que no debe contarse hacia los 10 milisegundos.
Se permite cierta clemencia en el tiempo siempre que promedie 10 milisegundos y esté desactivado por más de 1 milisegundo, no más del 1% del tiempo en una computadora con un ritmo razonable.
Salida
Puede generar la cadena en cualquier método que considere adecuado. Puede actualizar en vivo mientras el usuario está escribiendo o generar el resultado una vez que haya terminado de tomar la entrada (ya sea por una nueva línea o al final del archivo ^D
).
Casos de prueba
Algunos de estos fueron generados por este CMC en The Nineteenth Byte
First 10 | after | result
bra in-flak in-flakarb
ap ple plepa
code- golf golf-edoc
no ne neon
we st stew
ai med media
draw back backward
Respuestas:
VimScript,
4847 bytesVim tiene algunas buenas incorporaciones para esto. Requiere Vim 8.
Espera texto ingresado en modo de inserción, una entrada muy razonable para VimScript. Explicación:
Mi enfoque inicial
se ri|sl10m|se ri&
no funciona porque el texto se almacena hasta después del comando de suspensión y no pude encontrar una forma de evitarlo.fuente
HTML (JS), 96 bytes
Comienza a cronometrar por 1s desde la primera pulsación de tecla para darle la oportunidad de verlo en acción.
fuente
JavaScript (ES6), 88 bytes
Manifestación
La forma en que funciona el fragmento, deberá hacer clic dentro de su marco para que se enfoque después de hacer clic en el botón Ejecutar y antes que pueda comenzar a escribir.
No hay forma de hacerlo en menos de 10 ms. Entonces, configuré el retraso en 1 segundo en esta demostración, y aun así, será mejor que te apures.
Mostrar fragmento de código
fuente
Procesamiento,
167165146 bytesToma entradas como pulsaciones de teclas y salidas a la consola. Actualiza cada cuadro.
Explicación
fuente
asdf
+ghjk
. Si todo estuviera en una variable, luego de los 10 milisegundos, tendríamosfdsa
esa cadena. Después de eso, cuandog
se escribe, la cadena antepondrág
y se convertirágfdsa
. Luego, cuandoh
se escribe, no puedo anteponerh
a la variable (porque la entrada todavía está invertida), necesitaré usarsubstring
s y calcular lalength
variable de esa cadena. Esto costará muchos bytes.a
yb
). Incluso si asigno el resultado a una variable temporal, el bytecount resultante es aún mayor.C - 169 bytes
Bueno, C no es lo mejor para esto, ya que no tiene una forma independiente de plataforma para hacerlo. Trabaja bajo MSVC.
Un enfoque poco hacky, si puede escribir más de 9 caracteres en 10 ms, se bloqueará. Actualizaciones después de un personaje de nueva línea.
fuente
Python 2 ,
112106Si desea que la salida esté al ras, sin inundarse con líneas, use
print'\r'+a+b,
en su lugarTendrás que matar el proceso para detenerlo.
fuente