Цей виклик натхненний xkcd :
Виклик:
Ви змоделюєте копіювати великий файл (1 гігабайт). Швидкість передачі буде змінюватися від 10 кБ / секунду до 100 МБ / секунду. Ваше завдання - вивести час, що залишився при передачі файлу. Вихід повинен виглядати так:
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)
Провідні нулі не повинні відображатися протягом хвилин і годин (необов’язково), але повинні бути показані на секунди. Не відображається показ часу, що залишився до використання лише секунд.
Передача файлів:
- Швидкість передачі розпочнеться від 10 Мб / секунду.
- Щосекунди буде 30% шансів, що швидкість передачі зміниться
- Нова швидкість передачі повинна вибиратися випадковим чином (рівномірний розподіл) в діапазоні
[10 kB/s, 100 MB/s]
, кроками 10 кБ / с.
Примітка. Фактично не потрібно копіювати файл.
Ви можете скористатися: 1 GB = 1000 MB, 1 MB = 1000 kB, 1 kB = 1000 B
або 1 GB = 1024 MB, 1 MB = 1024 kB, 1 kB = 1024 B
.
Вихід:
- Ви починаєте з
01:40
, ні01:39
. - Ви відображаєте час після зміни швидкості передачі, але до того, як щось буде переведено з такою швидкістю
- Секунди повинні відображатися у вигляді цілих чисел, а не десяткових знаків. Необов’язково округляти вгору / вниз / найближче.
- Ви повинні очищати екран щосекунди, якщо це неможливо на вашій мові.
- Вихід повинен бути постійним:
Time remaining: 00:00
коли передача файлів закінчена.
Приклад:
Я округлю всі десяткові секунди. Припустимо, рядки нижче показані між 1 секундою, а екран буде очищений між кожним:
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
(або 1:42
) не 1:39
(або 1:41
)"?
1024
версію, які розміри кроків ми повинні використовувати?
00:00:10
наприклад?