Ваше завдання - обчислити очікуваний шанс на перемогу для двох гравців у якійсь грі, кожен з яких має свій рейтинг 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
включають мою власну, тому я не можу їх розміщувати :-(