simeonshopov

MOBA Challenger

Feb 7th, 2020
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.87 KB | None | 0 0
  1. players = {}
  2.  
  3. def manage_player(plrs: dict, pl: str, pos: str, skl: int):
  4.     if pl not in plrs:
  5.         plrs[pl] = {pos: skl}
  6.     elif pl in plrs:
  7.         if pos not in plrs[pl]:
  8.             plrs[pl][pos] = skl
  9.         else:
  10.             if skl > plrs[pl][pos]:
  11.                 plrs[pl][pos] = skl
  12.  
  13.  
  14. def manage_duel(pl1: str, pl2: str, plrs: dict):
  15.     found = False
  16.     key = ''
  17.     if pl1 in plrs and pl2 in plrs:
  18.         for k in plrs[pl1].keys():
  19.             for y in plrs[pl2].keys():
  20.                 if k == y:
  21.                     key = k
  22.                     found = True
  23.                     break
  24.         if found and plrs[pl1][key] != plrs[pl2][key]:
  25.             winner_val = max(plrs[pl1][key], plrs[pl2][key])
  26.             winner_pl = ''.join([j for j in plrs if winner_val in plrs[j].values()])
  27.             for plr, skll in plrs.items():
  28.                 if skll == winner_val:
  29.                     winner_pl = plr
  30.                     break
  31.             for g in (pl1, pl2):
  32.                 if g != winner_pl:
  33.                     del plrs[g]
  34.  
  35. while True:
  36.     data = input()
  37.     if data == 'Season end':
  38.         break
  39.     if '->' in data:
  40.         data = data.split(' -> ')
  41.         player = data[0]
  42.         position = data[1]
  43.         skill = int(data[2])
  44.         manage_player(players, player, position, skill)
  45.     elif 'vs' in data:
  46.         data = data.split(' vs ')
  47.         player_1 = data[0]
  48.         player_2 = data[1]
  49.         manage_duel(player_1, player_2, players)
  50.  
  51. order_main = sorted(sorted(players, key=lambda _: _), key=lambda _: sum(players[_].values()), reverse=True)
  52.  
  53. for x in order_main:
  54.     total = sum(players[x].values())
  55.     print(f'{x}: {total} skill')
  56.     position_order = sorted(sorted(players[x], key=lambda _: _), key=lambda _: players[x][_], reverse=True)
  57.     for f in position_order:
  58.         print(f'- {f} <::> {players[x][f]}')
Advertisement
Add Comment
Please, Sign In to add comment