This is a simple algorithm as described by bestthings.info. An entity's rank is calculated by (Num_things_I_beat)/(Num_things_I_beat + Num_things_beat_me)
I put this together in about half an hour (I'm really starving for time right now, with tons of projects!). I have a few ideas for the second part, but alas no code.
Part 2)
We will aim to improve the accuracy of our ranking by trying to re-rank those pairs that are not different enough. For example, if the agg
between a pair is say < 10, they are too similar, and we would wish to re-rank them. This could be done by implementing a simple dictionary to store aggregate ranks..
aggregate = {('a','b'): 23, ('a','c'): 3}
Now we could scan this dict to present to a user those pairs that are not different enough. For those with very high aggregate scores, we can avoid re-ranking because "the voters have had their say."