diff --git a/snippets/elo.md b/snippets/elo.md index 622cdc981..6e36ad874 100644 --- a/snippets/elo.md +++ b/snippets/elo.md @@ -15,17 +15,20 @@ const elo = ([...ratings], kFactor = 32, selfRating) => { const expectedScore = (self, opponent) => 1 / (1 + 10 ** ((opponent - self) / 400)); const newRating = (rating, i) => (selfRating || rating) + kFactor * (i - expectedScore(i ? a : b, i ? b : a)); + if (ratings.length === 2) { return [newRating(a, 1), newRating(b, 0)]; - } else { - for (let i = 0; i < ratings.length; i++) { - let j = i; - while (j < ratings.length - 1) { - [ratings[i], ratings[j + 1]] = elo([ratings[i], ratings[j + 1]], kFactor); - j++; - } + } + + for (let i = 0, l = ratings.length; i < l; i++) { + let j = i; + + while (j < l - 1) { + [ratings[i], ratings[j + 1]] = elo([ratings[i], ratings[j + 1]], kFactor); + j++; } } + return ratings; }; ```