Tantangan ini terinspirasi oleh xkcd :
Tantangan:
Anda akan mensimulasikan menyalin file besar (1 Gigabyte). Kecepatan transfer akan bervariasi antara 10 kB / detik hingga 100 MB / detik. Tugas Anda adalah menampilkan sisa waktu transfer file. Outputnya akan terlihat seperti:
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)
Angka nol di depan tidak perlu ditampilkan selama beberapa menit dan jam (opsional), tetapi harus ditunjukkan selama beberapa detik. Menunjukkan waktu yang tersisa hanya menggunakan detik tidak OK.
Transfer file:
- Kecepatan transfer akan mulai dari 10 MB / detik.
- Setiap detik, akan ada peluang 30% bahwa tingkat transfer akan berubah
- Laju transfer baru harus dipilih secara acak (distribusi seragam) dalam kisaran
[10 kB/s, 100 MB/s]
, dalam langkah 10 kB / s.
Catatan: Anda sebenarnya tidak perlu menyalin file.
Anda dapat memilih untuk menggunakan:, 1 GB = 1000 MB, 1 MB = 1000 kB, 1 kB = 1000 B
atau 1 GB = 1024 MB, 1 MB = 1024 kB, 1 kB = 1024 B
.
Keluaran:
- Anda mulai
01:40
, bukan01:39
. - Anda menampilkan waktu setelah perubahan kecepatan transfer, tetapi sebelum apa pun ditransfer pada kecepatan itu
- Detik harus ditampilkan sebagai bilangan bulat, bukan desimal. Ini opsional untuk mengumpulkan / menurunkan / terdekat.
- Anda harus menghapus layar setiap detik, kecuali itu tidak mungkin dalam bahasa Anda.
- Outputnya harus konstan:
Time remaining: 00:00
ketika transfer file selesai.
Contoh:
Saya telah mengumpulkan semua detik desimal. Asumsikan garis di bawah ini ditunjukkan dengan 1 detik di antaranya, dan layar dihapus di antara masing-masing:
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
(atau 1:42
) tidak 1:39
(atau 1:41
)"?
1024
versi, ukuran langkah apa yang harus kita gunakan?
00:00:10
contoh?