Ranking methods: Difference between revisions
Content added Content deleted
(→{{header|Python}}: New d & sc rankers.) |
(→{{header|Python}}: mc_rank without name: first and using enumerate.) |
||
Line 26: | Line 26: | ||
<lang python>def mc_rank(iterable, start=1): |
<lang python>def mc_rank(iterable, start=1): |
||
"""Modified competition ranking""" |
"""Modified competition ranking""" |
||
lastresult, lastrank, fifo = None, None, [] |
|||
for item in iterable: |
for n, item in enumerate(iterable, start-1): |
||
if |
if item[0] == lastresult: |
||
fifo += [item] |
|||
last, delta = item[0], 1 |
|||
fifo.append(item) |
|||
else: |
else: |
||
while fifo: |
|||
yield n, fifo.pop(0) |
|||
lastresult, lastrank, fifo = item[0], n, fifo + [item] |
|||
yield start - 1, fifo.pop(0) |
|||
delta = 1 |
|||
else: |
|||
delta += 1 |
|||
last = item[0] |
|||
fifo.append(item) |
|||
start += delta |
|||
while fifo: |
while fifo: |
||
yield |
yield n+1, fifo.pop(0) |
||