Este desafío está inspirado en xkcd :
Reto:
Simulará la copia de un archivo grande (1 Gigabyte). La velocidad de transferencia variará entre 10 kB / segundo a 100 MB / segundo. Su tarea es generar el tiempo restante de la transferencia de archivos. La salida debería verse así:
Time remaining: 03:12 (meaning it's 3 minutes and 12 seconds left)
Time remaining: 123:12 (meaning it's 2 hours, 3 minutes and 12 seconds left)
Time remaining: 02:03:12 (optional output, meaning the same as above)
Los ceros iniciales no necesitan mostrarse durante minutos y horas (opcional), pero deben mostrarse durante segundos. Mostrar el tiempo restante usando solo segundos no está bien.
La transferencia de archivos:
- La velocidad de transferencia comenzará a 10 MB / segundo.
- Cada segundo, habrá un 30% de posibilidades de que la tasa de transferencia cambie
- La nueva velocidad de transferencia debe seleccionarse al azar (distribución uniforme) en el rango
[10 kB/s, 100 MB/s], en pasos de 10 kB / s.
Nota: No es necesario que copie un archivo.
Puede elegir usar: 1 GB = 1000 MB, 1 MB = 1000 kB, 1 kB = 1000 Bo 1 GB = 1024 MB, 1 MB = 1024 kB, 1 kB = 1024 B.
Salida:
- Empiezas en
01:40, no01:39. - Muestra el tiempo después de que cambie la velocidad de transferencia, pero antes de que se transfiera nada a esa velocidad
- Los segundos deben mostrarse como enteros, no decimales. Es opcional redondear hacia arriba / abajo / más cercano.
- Debe borrar la pantalla cada segundo, a menos que sea imposible en su idioma.
- La salida debe ser constante:
Time remaining: 00:00cuando finaliza la transferencia del archivo.
Ejemplo:
He redondeado todos los segundos decimales. Suponga que las líneas a continuación se muestran con 1 segundo en el medio, y la pantalla se borra entre cada una:
Time remaining: 01:40 (Transfer rate: 10 MB/s)
Time remaining: 01:39 1 GB - 10 MB
Time remaining: 01:38 1 GB - 2*10 MB
Time remaining: 01:37 1 GB - 3*10 MB
Time remaining: 01:28:54 1 GB - 4*10 MB (TR: 180 kB/s)
Time remaining: 01:28:53 1 GB - 4*10 MB - 180 kB
Time remaining: 01:28:52 1 GB - 4*10 MB - 2*180 kB
Time remaining: 00:13 1 GB - 4*10 MB - 3*180 kB (TR: 75 MB/s)
Time remaining: 00:12 1 GB - 4*10 MB - 3*180 kB - 75 MB
Time remaining: 00:11 1 GB - 4*10 MB - 3*180 kB - 2*75 MB
Time remaining: 00:10 1 GB - 4*10 MB - 3*180 kB - 3*75 MB
Time remaining: 00:09 1 GB - 4*10 MB - 3*180 kB - 4*75 MB
Time remaining: 00:08 1 GB - 4*10 MB - 3*180 kB - 5*75 MB
Time remaining: 14:09:06 1 GB - 4*10 MB - 3*180 kB - 6*75 MB (TR: 10 kB/s)
Time remaining: 14:09:05 1 GB - 4*10 MB - 3*180 kB - 6*75 MB - 10 kB
Time remaining: 00:06 1 GB - 4*10 MB - 3*180 kB - 6*75 MB - 20 kB (TR: 88.110 MB/s)
Time remaining: 00:05
Time remaining: 00:04
Time remaining: 00:03
Time remaining: 00:02
Time remaining: 00:01
Time remaining: 00:00 <- Transfer is finished. Display this.
1:40(o 1:42) no 1:39(o 1:41)"?
1024versión, ¿cuáles son los tamaños de paso que deberíamos usar?
00:00:10por ejemplo?
