Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.30 KB | None | 0 0
  1. import pprint
  2.  
  3. FILES = {
  4.     "a": "a_example.txt",
  5.     "b": "b_read_on.txt",
  6.     "c": "c_incunabula.txt",
  7.     "d": "d_tough_choices.txt",
  8.     "e": "e_so_many_books.txt",
  9.     "f": "f_libraries_of_the_world",
  10. }
  11.  
  12. def load_books(file):
  13.     with open("inputs/"  + FILES[file]) as f:
  14.         lines = f.readlines()
  15.         lines = [line.replace('\n', '').split() for line in lines]
  16.         return lines
  17.  
  18. def get_stats(inp):
  19.     books_nr = int(inp[0][0])
  20.     libs_nr = int(inp[0][1])
  21.     days = int(inp[0][2])
  22.     book_prices = {i: int(inp[1][i]) for i in range(books_nr)}
  23.     library_stats = {}
  24.     libs_read = 0
  25.     current_lib_idx = 2
  26.     while libs_read < libs_nr:
  27.         lib_stats = inp[current_lib_idx]
  28.         lib_books_nr = lib_stats[0]
  29.         lib_signup = lib_stats[1]
  30.         lib_parallel = lib_stats[2]
  31.         lib_books = inp[current_lib_idx + 1]
  32.         library_stats[libs_read] = {
  33.             "lib_books_nr": int(lib_books_nr),
  34.             "lib_signup": int(lib_signup),
  35.             "lib_parallel": int(lib_parallel),
  36.             "lib_books": {int(bk) for bk in lib_books}
  37.         }
  38.  
  39.         current_lib_idx += 2
  40.         libs_read += 1
  41.     return {
  42.         "books_nr": books_nr,
  43.         "libs_nr": libs_nr,
  44.         "library_stats": library_stats,
  45.         "book_prices": book_prices,
  46.         "days": days,
  47.     }
  48.  
  49. def get_per_lib_unique_book_stats(problem_stats):
  50.     lib_stats = problem_stats['library_stats']
  51.  
  52.     libs_books_stats = {lib: set(lib_stats[lib]['lib_books']) for lib in lib_stats}
  53.  
  54.     return libs_books_stats
  55.  
  56.  
  57. def get_uniqueness(lb_stats):
  58.     uniques_per_lib = {}
  59.     for lib in lb_stats:
  60.         rest = set()
  61.         lib_books = lb_stats[lib]
  62.         for lib2 in lb_stats:
  63.             if lib == lib2:
  64.                 continue
  65.  
  66.             rest.update(lb_stats[lib2])
  67.  
  68.         uniques_per_lib[lib] = lib_books - rest
  69.  
  70.     return uniques_per_lib
  71.  
  72. if __name__ == '__main__':
  73.     problem_stats = get_stats(load_books("c"))
  74.     lb_stats = get_per_lib_unique_book_stats(problem_stats)
  75.     #
  76.     # pprint.pprint(problem_stats)
  77.     # pprint.pprint(lb_stats)
  78.     uniqueness_stats = get_uniqueness(lb_stats)
  79.     # pprint.pprint(uniqueness_stats)
  80.  
  81.  
  82.     total_score = sum([len(uniqueness_stats[lib]) for lib in uniqueness_stats])
  83.     print(total_score)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement