JoelSjogren

Untitled

Nov 1st, 2020
410
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. import numpy as np
  2.  
  3. races = (
  4. (0,4,2,5,1),
  5. (2,4,6,7,8),
  6. (6,4,3,1,2),
  7. (7,1,3,2),
  8. (4,0,6,5,8),
  9. (9,0,8,5)
  10. )
  11.  
  12. assert all(len(r) == len(set(r)) for r in races)
  13.  
  14. racers = set(sum(races, ()))
  15.  
  16. def won_against(i, j):
  17. out = np.array([0] * len(racers))
  18. out[i] = 1
  19. out[j] = -1
  20. return out
  21.  
  22. A = np.array([won_against(r[i], r[i+1])
  23. for r in races
  24. for i in range(len(r) - 1)])
  25. b = np.array([1] * A.shape[0])
  26.  
  27. # solve A*scores = b with least squares
  28. scores = np.linalg.lstsq(A, b, rcond=None)[0]
  29. ranking = list(reversed(np.argsort(scores)))
  30. print(f"ranking: {ranking}")
  31.  
  32. """
  33.  
  34. box% python main.py
  35. ranking: [9, 0, 6, 4, 7, 3, 2, 1, 5, 8]
  36.  
  37. """
  38.  
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment