งานของคุณคือการคำนวณโอกาสที่คาดว่าจะชนะสำหรับ 2 ผู้เล่นในบางเกมแต่ละคนมีของตัวเองELO การให้คะแนน ผู้เล่น A มี ELO R aและผู้เล่น B มี ELO R b
คะแนนที่คาดหวังสำหรับผู้เล่น A (E a ) คือ: 1 / (1 + 10 (R b - R a ) / 400 ) มีสมการที่คล้ายกันสำหรับผู้เล่น B (E b ): 1 / (1 + 10 (R a - R b ) / 400 )
หากคุณต้องการเวอร์ชั่นที่ใช้งานได้มากขึ้น: 1 / (1 + 10^((a-b) / 400))
E a + E bควรเท่ากับ 1
ดังนั้นคะแนนสำหรับผู้เล่นคือโอกาสที่พวกเขาคาดว่าจะชนะการแข่งขันเป็นทศนิยม
โปรแกรม / ฟังก์ชั่นของคุณควรใช้ 2 อินพุต, ELO ของผู้เล่น A และ ELO ของผู้เล่น B และพิมพ์ / คืนโอกาสที่จะชนะในรูปแบบทศนิยม ผลลัพธ์จะต้องเพิ่มขึ้นหนึ่งรายการและคุณจะต้องมีความถูกต้องอย่างน้อย 5 ตำแหน่งทศนิยม ( 0.00000
) หลังจากตำแหน่งทศนิยม 5 ตำแหน่งคุณอาจมีตัวเลขที่ไม่ถูกต้องหากผลลัพธ์สองรายการยังคงเพิ่มขึ้นหนึ่งรายการ
ตัวอย่าง:
1200 2100 -> 0.005591967 0.994408033
1 1 -> 0.5 0.5
60 20 -> 0.557312 0.442688
9999 9998 -> 0.501439 0.498561
9999 1 -> 0.999999 0.000001
ในกรณีทดสอบขั้นสุดท้ายคำตอบบางอย่างใช้การยกกำลังทางวิทยาศาสตร์เพื่อเป็นตัวแทนของค่า สิ่งนี้ไม่ถูกต้อง
คุณสามารถดูได้ในกรณีทดสอบ 3 ที่นี่ซึ่ง0.557312
ค่อนข้างไม่ถูกต้องเพราะ2
ควรเป็น a 1
แต่นี่ใช้ได้เพราะอยู่หลังทศนิยมห้าตำแหน่งและเอาต์พุตยังเพิ่มขึ้นอีกหนึ่งอัน
นี่คือตัวอย่างของเอาต์พุตที่ไม่ถูกต้อง:
9999 9998 -> 0.5014391117091516, 0.49856088829084844
ดูเหมือนว่าจะตอบสนองความต้องการได้อย่างรวดเร็วก่อน แต่จำนวนเพิ่มขึ้น1.00000000000000004
และทำให้การส่งออกไม่ถูกต้อง
ศูนย์ต่อท้ายในการส่งออกเป็นเรื่องปกติ
คุณอาจคิดว่า ELO ของผู้เล่นจะมากกว่า 0 เสมอและไม่มีใครจะมี ELO มากกว่า 9999
รูปแบบอินพุตและเอาต์พุตมีความยืดหยุ่น แต่อินพุตและเอาต์พุตต้องยังคงอยู่ในฐาน 10
เช่นนี้คือโค้ดกอล์ฟคำตอบที่มีจำนวนไบต์ต่ำสุดจะเป็นผู้ชนะ!
[9999, 998]
ซึ่งคำตอบส่วนใหญ่ดูเหมือนจะล้มเหลว
9999, 1
รวมของตัวเองดังนั้นฉันไม่สามารถโพสต์ :-(