Advertisement
exDotaPro

moba

Jul 16th, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.54 KB | None | 0 0
  1. def sort_dict(my_dict):
  2.     my_dict = {k: v for k, v in sorted(my_dict.items(), key=lambda x: (-x[1], x[0]))}
  3.     return my_dict
  4.  
  5.  
  6. pool = dict()
  7.  
  8. while True:
  9.     line = input()
  10.  
  11.     if line == 'Season end':
  12.         break
  13.  
  14.     if ' -> ' in line:
  15.         line = line.split(' -> ')
  16.         player, pos, skill = line[0], line[1], int(line[2])
  17.         if player not in pool:
  18.             pool.update({player: {pos: skill}})
  19.         elif pos not in pool[player]:
  20.             pool[player].update({pos: skill})
  21.         elif pool[player][pos] < skill:
  22.             pool[player][pos] = skill
  23.     else:
  24.         line = line.split(' vs ')
  25.         player_1, player_2 = line[0], line[1]
  26.         to_remove = []
  27.         if player_1 in pool and player_2 in pool:
  28.             for player, pos in pool.items():
  29.                 for current_pos in pos:
  30.                     if pool[player_1].__contains__(current_pos) and pool[player_2].__contains__(current_pos):
  31.                         if pool[player_1][current_pos] > pool[player_2][current_pos]:
  32.                             to_remove.append(player_2)
  33.                         elif pool[player_2][current_pos] > pool[player_1][current_pos]:
  34.                             to_remove.append(player_1)
  35.             for player in set(to_remove):
  36.                 del pool[player]
  37.  
  38. total_skill = dict()
  39.  
  40. for player, info in pool.items():
  41.     total_skill.update({player: 0})
  42.     for pos, skill in info.items():
  43.         total_skill[player] += skill
  44.  
  45. for player, skill in sort_dict(total_skill).items():
  46.     print(f'{player}: {skill} skill')
  47.     for pos, pos_skill in sort_dict(pool[player]).items():
  48.         print(f'- {pos} <::> {pos_skill}')
  49.  
  50.  
  51. ---------------------------------------------------------------------------------------------------------------------
  52.  
  53.  
  54. import re
  55.  
  56. delimiters = ' -> ', ' vs '
  57. regexPattern = '|'.join(map(re.escape, delimiters))
  58.  
  59.  
  60. def sort_dict(my_dict):
  61.     my_dict = {k: v for k, v in sorted(my_dict.items(), key=lambda x: (-x[1], x[0]))}
  62.     return my_dict
  63.  
  64.  
  65. pool = dict()
  66.  
  67. while True:
  68.     line = re.split(regexPattern, input())
  69.  
  70.     if line[0] == 'Season end':
  71.         break
  72.  
  73.     if len(line) == 3:
  74.         player, pos, skill = line[0], line[1], int(line[2])
  75.         if player not in pool:
  76.             pool.update({player: {pos: skill}})
  77.         elif pos not in pool[player]:
  78.             pool[player].update({pos: skill})
  79.         elif pool[player][pos] < skill:
  80.             pool[player][pos] = skill
  81.     else:
  82.         player_1, player_2 = line[0], line[1]
  83.         to_remove = []
  84.         if player_1 in pool and player_2 in pool:
  85.             for player, pos in pool.items():
  86.                 for current_pos in pos:
  87.                     if pool[player_1].__contains__(current_pos) and pool[player_2].__contains__(current_pos):
  88.                         if pool[player_1][current_pos] > pool[player_2][current_pos]:
  89.                             to_remove.append(player_2)
  90.                         elif pool[player_2][current_pos] > pool[player_1][current_pos]:
  91.                             to_remove.append(player_1)
  92.             for player in set(to_remove):
  93.                 del pool[player]
  94.  
  95. total_skill = dict()
  96.  
  97. for player, info in pool.items():
  98.     total_skill.update({player: 0})
  99.     for pos, skill in info.items():
  100.         total_skill[player] += skill
  101.  
  102. total_skill = sort_dict(total_skill)
  103.  
  104. for player, skill in total_skill.items():
  105.     print(f'{player}: {skill} skill')
  106.     for pos, pos_skill in sort_dict(pool[player]).items():
  107.         print(f'- {pos} <::> {pos_skill}')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement