Göreviniz, her biri kendi ELO Derecelendirmesine sahip bazı oyunlarda 2 oyuncu için beklenen kazanma şansını hesaplamaktır . A oyuncusu ELO R a ve B oyuncusu ELO R b
Oyuncu A (E beklenen mı a ) aşağıdaki gibidir: 1 / (1 + 10 (R, B - Ar bir ) / 400 ). Oyuncu B (E için de benzer bir denklem vardır b (1 + 10: 1 /) (R ' bir - R' b ) / 400 ).
Daha kopyalanabilir bir sürüm istiyorsanız: 1 / (1 + 10^((a-b) / 400))
E , bir + E b 1 'e eşit olması gerekir.
Bu nedenle, bir oyuncunun puanı, ondalık olarak bir maç kazanma şanslarıdır.
Programınız / işleviniz Oyuncu A'nın ELO'su ve Oyuncu B'nin ELO'su olmak üzere 2 giriş almalı ve ondalık biçimde kazanma şanslarını yazdırmalı / döndürmelidir. Çıkış olmalı birine kadar ekleyin ve en az 5 ondalık basamağa doğru olmalıdır ( 0.00000). 5 ondalık basamaktan sonra, iki çıkışın hala bir taneye kadar toplaması şartıyla, yanlış basamaklara sahip olabilirsiniz.
Örnekler:
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
Son test durumunda, bazı cevaplar değeri temsil etmek için bilimsel üs alma kullanır. Bu geçerli değil.
Burada test durumu 3'te 0.557312oldukça doğru olmadığını görebilirsiniz, çünkü 2a olmalı 1, ancak bu iyi çünkü beş ondalık basamaktan sonra ve çıkışlar hala bir tane ekliyor.
Bu geçersiz çıktıya bir örnektir:
9999 9998 -> 0.5014391117091516, 0.49856088829084844
Bu, ilk bakışta gereksinimleri karşılar gibi görünüyor, ancak sayılar toplanıyor 1.00000000000000004ve bu nedenle çıktı geçerli değil.
Çıktıdaki sondaki sıfırlar iyi.
Bir oyuncunun ELO'sunun daima 0'dan büyük olacağını ve hiç kimsenin 9999'dan daha yüksek bir ELO'su olmayacağını varsayabilirsiniz.
Giriş ve çıkış formatı esnektir, ancak giriş ve çıkış yine de taban 10'da olmalıdır.
Bu kod golf olduğundan , en düşük bayt sayısına sahip cevap kazanacaktır!
[9999, 998]Çoğu cevabın başarısız olduğu görülen test senaryosunu da eklemelisiniz .
9999, 1kendi dahil olmak üzere başarısız , bu yüzden gönderemiyorum :-(