Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.86 KB | None | 0 0
  1. def get_ranks(input_array):
  2.     data = sorted(input_array)
  3.     if len(data) == 0:
  4.         return []
  5.     data_with_count = []
  6.     for elem in data:
  7.         if len(data_with_count) == 0:
  8.             data_with_count.append([elem, 1])
  9.         else:
  10.             if elem == data_with_count[-1][0]:
  11.                 data_with_count[-1][1] += 1
  12.             else:
  13.                 data_with_count.append([elem, 1])
  14.     start_rank = 1
  15.     rank_data = {}
  16.     for elem, count in data_with_count:
  17.         finish_rank = start_rank + count - 1
  18.         rank_data[elem] = (start_rank + finish_rank) / 2.0
  19.         start_rank = finish_rank + 1
  20.     return [rank_data[elem] for elem in input_array]
  21.  
  22. # print (get_ranks([0, 0, 1, 1, 3, 3, 3]))
  23. # print (get_ranks([1, 2, 3, 4]))
  24. print (get_ranks([2,3,1,3,4,5]))
  25. print (get_ranks([1, 2, 3, 4, 5]))
  26. print (get_ranks([-1, -3, 1, 1]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement