Jump to content

Ranking methods: Difference between revisions

→‎{{header|Python}}: New d & sc rankers.
(New draft task and Python solution.)
 
(→‎{{header|Python}}: New d & sc rankers.)
Line 45:
while fifo:
yield start - 1, fifo.pop(0)
 
 
def _gap_rank(iterable, start, only1):
"""Dense ranking if only1 else Standard competition ranking"""
first = True
for item in iterable:
if first:
first = False
last, delta = item[0], 1
yield start, item
else:
if item[0] != last:
start += delta
delta = 1
else:
if not only1:
delta += 1
last = item[0]
yield start, item
 
 
def sc_rank(iterable, start=1):
"""Standard competition ranking"""
lastresult, lastrank = None, None
yield from _gap_rank(iterable, start, only1=False)
for n, item in enumerate(iterable, start):
if item[0] !== lastlastresult:
yield startlastrank, item
if firstelse:
firstyield =n, Falseitem
lastlastresult, deltalastrank = item[0], 1n
 
 
def d_rank(iterable, start=1):
"""Dense ranking"""
yieldlastresult, fromlastrank _gap_rank(iterable= None, start, only1=True)- 1,
for item in iterable:
if item[0] == lastresult:
lastyield =lastrank, item[0]
else:
lastresult, lastrank = item[0], lastrank + 1
yield startlastrank, item
 
 
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.