var K_VALUE = 64; var RANGE = 400; function easy_elo(elo1,elo2,result) { return elo_calculator((result?1:0),(result?0:1),elo1,elo2); } function elo_calculator(score1,score2,e1,e2) { var elo1 = parseInt(e1); var elo2 = parseInt(e2); var e; var r = []; if(score1 != score2) // le match n'est pas une égalité, il existe un vainqueur { if(score1 > score2) // le vainqueur est l'entité 1 { e=K_VALUE-Math.round(1/(1+Math.pow(10,((elo2-elo1)/RANGE)))*K_VALUE); r['new_elo1'] = elo1 + e; r['new_elo2'] = elo2 - e; } else // le vainqueur est l'entité 2 { e=K_VALUE-Math.round(1/(1+Math.pow(10,((elo1-elo2)/RANGE)))*K_VALUE); r['new_elo1'] = elo1 - e; r['new_elo2'] = elo2 + e; } } else // le match est une égalité, il n'existe pas de vainqueur { if(elo1 == elo2) // les deux entités ont le même classement elo { r['new_elo1'] = elo1; r['new_elo2'] = elo2; } else // les deux entités n'ont pas le même classement elo { if(elo1 > elo2) // l'entité 1 a un classement elo plus élevé { e=(K_VALUE-Math.round(1/(1+Math.pow(10,((elo1-elo2)/RANGE)))*K_VALUE))-(K_VALUE-Math.round(1/(1+Math.pow(10,((elo2-elo1)/RANGE)))*K_VALUE)); r['new_elo1'] = elo1 - e; r['new_elo2'] = elo2 + e; } else // l'entité 2 a un classement elo plus élevé { e=(K_VALUE-Math.round(1/(1+Math.pow(10,((elo2-elo1)/RANGE)))*K_VALUE))-(K_VALUE-Math.round(1/(1+Math.pow(10,((elo1-elo2)/RANGE)))*K_VALUE)); r['new_elo1'] = elo1 + e; r['new_elo2'] = elo2 - e; } } } r['change1'] = ((r['new_elo1'] - elo1) > 0) ? ('+'+(r['new_elo1'] - elo1)) : ((r['new_elo1'] - elo1)+''); r['change2'] = ((r['new_elo2'] - elo2) > 0) ? ('+'+(r['new_elo2'] - elo2)) : ((r['new_elo2'] - elo2)+''); return r; }