# HG changeset patch # User Laman # Date 2021-10-20 11:38:18 # Node ID 068be3e00177908fba5796cddc750df530834cfa # Parent 6644c5267fb5f805588463da43fb9d15e4386a51 ranks tracked by the RankTracker diff --git a/rank_progress.py b/rank_progress.py --- a/rank_progress.py +++ b/rank_progress.py @@ -11,14 +11,12 @@ class Record: self.pin = int(tokens[0]) self.country_code = tokens[2] self.rating_before = int(tokens[8]) - self.rounded_before = round_rating(self.rating_before) self.rating_after = int(tokens[9]) - self.rounded_after = round_rating(self.rating_after) tournament_code = tokens[5] self.date = datetime.strptime(tournament_code[1:7], "%y%m%d") - self.rank_change = (rating_to_rank(self.rating_before), rating_to_rank(self.rating_after)) + self.rank_change = ("", "") @classmethod def parse(cls, line): @@ -43,6 +41,10 @@ class RankTracker: def rank(self): return rating_to_rank(self._rounded_rating) + @property + def rounded_rating(self): + return self._rounded_rating + def update(self, rating): assert rating >= -900 rounded_rating = round_rating(rating) @@ -101,23 +103,19 @@ if __name__ == "__main__": for (pin, recs) in player_records: tourneys = list(recs) - rounded_rating = tourneys[0].rounded_before - + tracker = RankTracker(tourneys[0].rating_before) steps = [] for r in tourneys: # omit reset ratings - if rounded_rating != r.rounded_before: - rounded_rating = r.rounded_before + if tracker.rounded_rating != round_rating(r.rating_before): + tracker = RankTracker(r.rating_before) - if r.rating_after-rounded_rating >= 50 or \ - (rounded_rating-r.rating_after > 100 and rounded_rating >= 1600): + old_rank = tracker.rank + new_rank = tracker.update(r.rating_after) + if new_rank is not False: + r.rank_change = (old_rank, new_rank) steps.append(r) - rounded_rating = r.rounded_after - elif rounded_rating-r.rating_after > 150: - - steps.append(r) - rounded_rating = r.rounded_after + 100 steps = [r for r in steps if since <= r.date <= to] if steps: