Ranking methods: Difference between revisions
Content added Content deleted
(New draft task and Python solution.) |
(→{{header|Python}}: New d & sc rankers.) |
||
Line 45: | Line 45: | ||
while fifo: |
while fifo: |
||
yield start - 1, fifo.pop(0) |
yield start - 1, fifo.pop(0) |
||
def _gap_rank(iterable, start, only1): |
|||
"""Dense ranking if only1 else Standard competition ranking""" |
|||
first = True |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
start += delta |
|||
delta = 1 |
|||
else: |
|||
if not only1: |
|||
delta += 1 |
|||
⚫ | |||
⚫ | |||
def sc_rank(iterable, start=1): |
def sc_rank(iterable, start=1): |
||
"""Standard competition ranking""" |
"""Standard competition ranking""" |
||
lastresult, lastrank = None, None |
|||
yield from _gap_rank(iterable, start, only1=False) |
|||
for n, item in enumerate(iterable, start): |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
def d_rank(iterable, start=1): |
def d_rank(iterable, start=1): |
||
"""Dense ranking""" |
"""Dense ranking""" |
||
lastresult, lastrank = None, start - 1, |
|||
⚫ | |||
if item[0] == lastresult: |
|||
⚫ | |||
⚫ | |||
lastresult, lastrank = item[0], lastrank + 1 |
|||
⚫ | |||