Fondo
El echoprograma es muy ordenado. ¡Puedes decirle cualquier cosa, y repite tus palabras perfectamente, siempre! ¡Cuan genial es eso! Decepcionantemente, repite la entrada de una sola vez, independientemente de su velocidad de escritura, que no es muy realista. Tendremos que arreglar eso.
La tarea
Su programa tomará su entrada de STDIN o su equivalente más cercano. Leerá las líneas del usuario una por una, posiblemente mostrando algún aviso, hasta que ingresen una línea vacía. Después de eso, imprimirá las líneas a STDOUT o su equivalente más cercano, en el mismo orden en que se dieron. La última línea (vacía) no se imprime y la última línea impresa no necesita tener una nueva línea final.
Además, el programa preservará los intervalos de tiempo entre cada línea: si el usuario tardó xsegundos en ingresar una línea, xel programa tardará unos segundos en imprimirla. Esto se aplica también a la primera y última línea; la línea vacía no se imprime, pero el programa espera de todos modos antes de finalizar.
Ejemplo
Aquí hay una sesión de ejemplo con el programa. Todas las acciones que no producen texto se describen entre paréntesis y la solicitud (opcional) se muestra como >.
[begin program]
> fhtagn[enter; 1.48s passed since starting program]
> yum yum[enter; 3.33s passed since previous enter]
> so cool![enter; 2.24s passed since previous enter]
> [enter; 0.23s passed since previous enter]
[wait 1.48s]fhtagn
[wait 3.33s]yum yum
[wait 2.24s]so cool!
[wait 0.23s, then end program]
Sin las acciones, la sesión se ve así:
> fhtagn
> yum yum
> so cool!
>
fhtagn
yum yum
so cool!
Reglas y puntuación
Los tiempos de espera deben ser precisos dentro de 0.01 segundos (en la práctica, si el humano promedio no puede notar la diferencia, está bien). El conteo de bytes más bajo gana, y las lagunas estándar no se permiten. Si su idioma tiene una función incorporada para precisamente esta tarea, no puede usarla.
yum yum, lo cual fue bastante engorroso.