Thử thách này được lấy cảm hứng từ xkcd :
Thử thách:
Bạn sẽ mô phỏng việc sao chép một tệp lớn (1 Gigabyte). Tốc độ truyền sẽ thay đổi trong khoảng từ 10 kB / giây đến 100 MB / giây. Nhiệm vụ của bạn là xuất thời gian còn lại của quá trình truyền tệp. Đầu ra sẽ giống như:
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)
Các số 0 đứng đầu không cần phải được hiển thị trong vài phút và giờ (tùy chọn), nhưng phải được hiển thị trong vài giây. Hiển thị thời gian còn lại chỉ sử dụng giây là không ổn.
Việc chuyển tập tin:
- Tốc độ truyền sẽ bắt đầu ở mức 10 MB / giây.
- Mỗi giây, sẽ có 30% cơ hội tốc độ chuyển sẽ thay đổi
- Tốc độ truyền mới phải được chọn ngẫu nhiên (phân phối đồng đều) trong phạm vi
[10 kB/s, 100 MB/s]
, theo các bước 10 kB / s.
Lưu ý: Bạn không cần phải sao chép một tập tin.
Bạn có thể chọn sử dụng : 1 GB = 1000 MB, 1 MB = 1000 kB, 1 kB = 1000 B
, hoặc 1 GB = 1024 MB, 1 MB = 1024 kB, 1 kB = 1024 B
.
Đầu ra:
- Bạn bắt đầu lúc
01:40
, không01:39
. - Bạn hiển thị thời gian sau khi tốc độ truyền thay đổi, nhưng trước khi mọi thứ được chuyển ở tốc độ đó
- Các giây nên được hiển thị dưới dạng số nguyên, không phải số thập phân. Đó là tùy chọn để làm tròn lên / xuống / gần nhất.
- Bạn nên xóa màn hình mỗi giây, trừ khi điều đó là không thể trong ngôn ngữ của bạn.
- Đầu ra phải không đổi:
Time remaining: 00:00
khi quá trình truyền tệp kết thúc.
Thí dụ:
Tôi đã làm tròn tất cả các giây thập phân. Giả sử các dòng bên dưới được hiển thị với 1 giây ở giữa và màn hình sẽ bị xóa giữa mỗi dòng:
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
(hoặc 1:42
) không 1:39
(hoặc 1:41
)"?
1024
phiên bản, kích thước bước chúng ta nên sử dụng là gì?
00:00:10
chẳng hạn không?