ความท้าทายนี้ได้รับแรงบันดาลใจจากxkcd :
ท้าทาย:
คุณจะจำลองการคัดลอกไฟล์ขนาดใหญ่ (1 กิกะไบต์) อัตราการถ่ายโอนจะแตกต่างกันระหว่าง 10 kB / วินาทีถึง 100 MB / วินาที งานของคุณคือการส่งออกเวลาที่เหลือของการถ่ายโอนไฟล์ ผลลัพธ์ควรมีลักษณะดังนี้:
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 MB / วินาที
- ทุกวินาทีจะมีโอกาส 30% ที่อัตราการถ่ายโอนจะเปลี่ยนแปลง
- อัตราการถ่ายโอนใหม่ควรเลือกแบบสุ่ม (การกระจายแบบสม่ำเสมอ) ในช่วงเป็น
[10 kB/s, 100 MB/s]
ขั้นตอน 10 kB / s
หมายเหตุ: คุณไม่จำเป็นต้องคัดลอกไฟล์จริง
คุณอาจเลือกที่จะใช้: หรือ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
ตัวอย่างได้หรือไม่?