[นี่เป็นคำถามจากคู่ค้าเพื่อคำนวณความน่าจะเป็น ]
งานนี้เป็นเรื่องเกี่ยวกับการเขียนโค้ดเพื่อคำนวณความน่าจะเป็นตรงและรวดเร็ว ผลลัพธ์ควรเป็นความน่าจะเป็นที่แม่นยำที่เขียนเป็นเศษส่วนในรูปแบบที่ลดลงมากที่สุด นั่นคือไม่ควรเอาท์พุท4/8
แต่จะดี1/2
กว่า
สำหรับจำนวนเต็มบวกn
พิจารณาสตริงสุ่มอย่างสม่ำเสมอของ 1s และ -1s ของความยาวn
และเรียกมันว่า A ตอนนี้เชื่อมต่อกับA
ค่าแรก นั่นคือA[1] = A[n+1]
ถ้าการจัดทำดัชนีจาก 1. ในขณะนี้มีความยาวA
n+1
ทีนี้ลองพิจารณาความยาวสตริงที่สองแบบสุ่มn
ซึ่งมีn
ค่าแรกคือ -1, 0 หรือ 1 ที่มีความน่าจะเป็น 1/4, 1/2, 1/4 แต่ละอันและเรียกมันว่า B
ตอนนี้พิจารณาผลิตภัณฑ์ภายในA[1,...,n]
และB
และสินค้าภายในของและA[2,...,n+1]
B
n=3
ตัวอย่างเช่นพิจารณา ค่าที่เป็นไปได้A
และB
อาจจะเป็นและA = [-1,1,1,-1]
B=[0,1,-1]
ในกรณีนี้ผลิตภัณฑ์ทั้งสองด้านมีและ0
2
รหัสของคุณจะต้องแสดงผลความน่าจะเป็นที่ผลิตภัณฑ์ทั้งสองนั้นมีค่าเป็นศูนย์
คัดลอกตารางที่ผลิตโดย Martin Büttnerเรามีผลลัพธ์ตัวอย่างต่อไปนี้
n P(n)
1 1/2
2 3/8
3 7/32
4 89/512
5 269/2048
6 903/8192
7 3035/32768
8 169801/2097152
ภาษาและห้องสมุด
คุณสามารถใช้ภาษาและไลบรารี่ที่คุณต้องการได้ฟรี ฉันจะต้องสามารถเรียกใช้รหัสของคุณดังนั้นโปรดรวมคำอธิบายแบบเต็มสำหรับวิธีการเรียกใช้ / รวบรวมรหัสของคุณใน linux ถ้าเป็นไปได้ทั้งหมด
งาน
รหัสของคุณจะต้องเริ่มต้นด้วยn=1
และให้ผลลัพธ์ที่ถูกต้องสำหรับการเพิ่ม n ในแต่ละบรรทัด ควรหยุดหลังจาก 10 วินาที
คะแนน
คะแนนนั้นn
มาถึงจุดสูงสุดก่อนที่รหัสของคุณจะหยุดหลังจาก 10 วินาทีเมื่อทำงานบนคอมพิวเตอร์ของฉัน หากมีการเสมอกันผู้ชนะจะเป็นคนที่ได้คะแนนสูงสุดเร็วที่สุด
สารบัญ
n = 64
ในหลาม รุ่นที่ 1 โดย Mitch Schwartzn = 106
ในหลาม รุ่น 11 มิถุนายน 2558 โดย Mitch Schwartzn = 151
ในภาษา C ++ คำตอบของ Port of Mitch Schwartz โดย kirbyfan64sosn = 165
ในหลาม รุ่น 11 มิถุนายน 2015 ว่า "การตัดแต่งกิ่ง"N_MAX = 165
รุ่นโดยมิทช์ชวาร์ตซ์ด้วยn = 945
ในPythonโดย Min_25 โดยใช้สูตรที่แน่นอน ! ที่น่าตื่นตาตื่นใจn = 1228
ในPythonโดย Mitch Schwartz ใช้สูตรที่แน่นอนอื่น (ตามคำตอบก่อนหน้าของ Min_25)n = 2761
ในPythonโดย Mitch Schwartz โดยใช้สูตรที่แน่นอนกว่าเดิมอย่างรวดเร็วn = 3250
ในPythonโดยใช้Pypyโดย Mitch Schwartz โดยใช้การดำเนินการเดียวกัน คะแนนนี้ต้องpypy MitchSchwartz-faster.py |tail
หลีกเลี่ยงค่าใช้จ่ายในการเลื่อนคอนโซล