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