Advertisement
viligen

snow_white

Nov 14th, 2021
903
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.12 KB | None | 0 0
  1.  
  2. dwarfs_data = {}
  3. hat_phys_groups = {}
  4. index_entry = 0
  5.  
  6. while True:
  7.     data = input()
  8.     if "Once upon a time" in data:
  9.         break
  10.     dwarf_name, dwarf_hat_color, dwarf_physics = data.split(" <:> ")
  11.     dwarf_physics = int(dwarf_physics)
  12.     dwarf_id = dwarf_hat_color + dwarf_name
  13.     group_id = dwarf_hat_color
  14.     index_entry += 1
  15.     if dwarf_id not in dwarfs_data:
  16.         dwarfs_data[dwarf_id] = (dwarf_hat_color, dwarf_name, dwarf_physics, index_entry)
  17.         if group_id not in hat_phys_groups:
  18.             hat_phys_groups[group_id] = 0
  19.         hat_phys_groups[group_id] += 1
  20.     elif dwarfs_data[dwarf_id][2] <= dwarf_physics:
  21.         old_group_id = dwarf_hat_color
  22.         hat_phys_groups[old_group_id] -= 1
  23.         dwarfs_data[dwarf_id] = (dwarf_hat_color, dwarf_name, dwarf_physics, index_entry)
  24.         if group_id not in hat_phys_groups:
  25.             hat_phys_groups[group_id] = 0
  26.         hat_phys_groups[group_id] += 1
  27. sorted_dwarfs = sorted(dwarfs_data.items(), key=lambda kvp: (-kvp[1][2], -hat_phys_groups[kvp[1][0]], kvp[1][3]))
  28. for k, v in sorted_dwarfs:
  29.     print(f"({v[0]}) {v[1]} <-> {v[2]}")
  30.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement