Sua tarefa é calcular a chance esperada de ganhar para 2 jogadores em algum jogo, cada um com sua própria classificação ELO . O jogador A tem ELO R a e o jogador B tem ELO R b
A pontuação esperada para o jogador A (E a ) é: 1 / (1 + 10 (R b - R a ) / 400 ). Há uma equação semelhante para o jogador B (E b ): 1 / (1 + 10 (R um - R b ) / 400 ).
Se você deseja uma versão mais copiável: 1 / (1 + 10^((a-b) / 400))
E a + E b deve ser igual a 1.
Portanto, a pontuação de um jogador é a chance esperada de ganhar alguma partida, em decimal.
Seu programa / função deve receber 2 entradas, ELO do Jogador A e ELO do Jogador B, e imprimir / retornar sua respectiva chance de ganhar no formato decimal. A saída deve somar uma e você precisa ter pelo menos 5 casas decimais ( 0.00000
). Depois de 5 casas decimais, você pode ter dígitos imprecisos, desde que as duas saídas ainda somam uma.
Exemplos:
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
No caso de teste final, algumas respostas usam exponenciação científica para representar o valor. Isto não é válido.
Você pode ver aqui no caso de teste 3 que 0.557312
não é muito preciso, porque 2
deveria ser um 1
, mas isso é bom porque ocorre depois de cinco casas decimais e as saídas ainda somam uma.
Este é um exemplo de saída inválida:
9999 9998 -> 0.5014391117091516, 0.49856088829084844
Parece que ele satisfaz os requisitos à primeira vista, mas os números somam 1.00000000000000004
e, portanto, a saída não é válida.
Os zeros à direita na saída estão corretos.
Você pode presumir que a ELO de um jogador sempre será maior que 0 e que ninguém terá uma ELO maior que 9999.
O formato de entrada e saída é flexível, mas a entrada e a saída ainda devem estar na base 10.
Como se trata de código-golfe , a resposta com a menor contagem de bytes vencerá!
[9999, 998]
qual a maioria das respostas parece falhar.
9999, 1
incluindo o meu, então eu não posso postá-lo :-(