Bu zorluk xkcd'den ilham alıyor :
Meydan okuma:
Büyük bir dosyayı (1 Gigabyte) kopyalamayı simüle edersiniz. Aktarım hızı, 10 kB / saniye ila 100 MB / saniye arasında değişecektir. Göreviniz, dosya transferinden kalan sürenin çıktısını almaktır. Çıktı şöyle görünmelidir:
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)
Öne çıkan sıfırların dakikalarca ve saatlerce gösterilmesi gerekmez (isteğe bağlı), ancak saniyelarca gösterilmesi gerekir. Sadece saniye kullanarak kalan süreyi göstermeniz tamam değildir.
Dosya aktarımı:
- Aktarım hızı 10 MB / saniye ile başlayacaktır.
- Her saniye, transfer hızının değişmesi% 30 şansı olacak
- Yeni aktarım hızı
[10 kB/s, 100 MB/s]
, 10 kB / s'lik adımlarla aralıkta rasgele (homojen dağılım) seçilmelidir .
Not: Bir dosyayı gerçekten kopyalamanıza gerek yoktur.
Kullanmayı seçebilirsiniz:, 1 GB = 1000 MB, 1 MB = 1000 kB, 1 kB = 1000 B
veya 1 GB = 1024 MB, 1 MB = 1024 kB, 1 kB = 1024 B
.
Çıktı:
- Başlıyorsun
01:40
, değil01:39
. - Aktarım hızı değiştikten sonra ancak bu hızda herhangi bir şey aktarılmadan önce zamanı görüntülersiniz.
- Saniyeler, ondalık sayılar değil tam sayılar olarak gösterilmelidir. Yuvarlama / aşağı / en yakın noktaya getirmek isteğe bağlıdır.
- Dilinizde imkansız olmadığı sürece, ekranı her saniye temizlemelisiniz.
- Çıktı sabit olmalıdır:
Time remaining: 00:00
dosya aktarımı bittiğinde.
Örnek:
Ondalık saniyeleri yuvarladım. Aşağıdaki satırların arasında 1 saniye göründüğünü ve her birinin arasında ekranın silindiğini varsayalım:
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
(ya da 1:42
) 1:39
(ya da 1:41
)" olması mı gerekir?
1024
sürümü kullanıyorsak, kullanmamız gereken adım boyutları nelerdir?
00:00:10
örneğin çıktıyı bırakabilir miyiz ?