พิจารณาลำดับหมายเลขต่อไปนี้:
มันระบุเศษส่วนไบนารีทั้งหมดในช่วงเวลาที่หน่วย1)
(เพื่อให้การท้าทายนี้ง่ายขึ้นองค์ประกอบแรกเป็นทางเลือก: คุณอาจข้ามไปและพิจารณาลำดับที่เริ่มต้นด้วย 1/2)
งาน
เขียนโปรแกรม (โปรแกรมสมบูรณ์หรือฟังก์ชั่น) ซึ่ง ...
เลือกหนึ่งในพฤติกรรมเหล่านี้:
- อินพุต n, องค์ประกอบที่ n เอาท์พุทของลำดับ (ดัชนี 0 หรือดัชนี 1)
- อินพุต n, เอาท์พุตองค์ประกอบแรกของลำดับ
- ไม่มีอะไรให้ป้อนออกลำดับหมายเลขอนันต์ซึ่งคุณสามารถรับได้ทีละตัว
กฎ
- โปรแกรมของคุณควรสนับสนุนอย่างน้อย 1,000 รายการแรก;
- คุณสามารถเลือกที่จะเอาท์พุททศนิยมหรือเศษส่วน (ในตัวคู่จำนวนเต็มสตริง) ตามที่คุณต้องการ;
- คำถามนี้ไม่อนุญาตให้ใช้อินพุต / เอาต์พุตเป็นเลขฐานสอง
- นี่คือรหัส - กอล์ฟรหัสที่สั้นที่สุดชนะ;
- ช่องโหว่มาตรฐานไม่อนุญาต
Testcases
input output
1 1/2 0.5
2 1/4 0.25
3 3/4 0.75
4 1/8 0.125
10 5/16 0.3125
100 73/128 0.5703125
511 511/512 0.998046875
512 1/1024 0.0009765625
ตัวอย่างเหล่านี้ขึ้นอยู่กับลำดับ 0 ดัชนีที่มี 0 นำหน้า คุณจะต้องปรับอินพุตเพื่อให้เหมาะสมกับโซลูชันของคุณ
อ่านเพิ่มเติม
- OEIS A006257
- ปัญหาฟั: 1 (เดิมคือ M2216)
- 0, 1, 1, 3, 1, 3, 5, 7, 1, 3, 5, 7, 9, 11, 13, 15, 1, 3, 5, ...
- OEIS A062383
- : สำหรับ ,หรือrfloor}
- 1, 2, 4, 4, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 32, 32, 32, 32, ...
A006257 (n) / A062383 (n) = (0, 0.1, 0.01, 0.11, 0.001, ... ) ระบุเศษส่วนไบนารีทั้งหมดในช่วงหน่วย [0, 1) - Fredrik Johansson, 14 ส.ค. 2549
"1/2" "1/4" "1/8"...
take
องค์ประกอบในภายหลัง
int
s หรือdouble
ในภาษา / การใช้งานซึ่งdouble
ใช้รูปแบบ IEEE binary64หรือไม่ ฉันหวังว่าคุณไม่ได้หมายความว่าต้องแยกสตริง ASCII ถ้าเราต้องการที่จะป้อนจำนวนเต็ม? ประเภทจำนวนเต็มปกติเป็นเลขฐานสองในภาษาเช่น C หรือคุณหมายถึงอินพุต / เอาต์พุตไม่สามารถเป็นอาร์เรย์หรือสตริงของจำนวนเต็มหรือศูนย์ ASCII / คน?