Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pprint
- FILES = {
- "a": "a_example.txt",
- "b": "b_read_on.txt",
- "c": "c_incunabula.txt",
- "d": "d_tough_choices.txt",
- "e": "e_so_many_books.txt",
- "f": "f_libraries_of_the_world",
- }
- def load_books(file):
- with open("inputs/" + FILES[file]) as f:
- lines = f.readlines()
- lines = [line.replace('\n', '').split() for line in lines]
- return lines
- def get_stats(inp):
- books_nr = int(inp[0][0])
- libs_nr = int(inp[0][1])
- days = int(inp[0][2])
- book_prices = {i: int(inp[1][i]) for i in range(books_nr)}
- library_stats = {}
- libs_read = 0
- current_lib_idx = 2
- while libs_read < libs_nr:
- lib_stats = inp[current_lib_idx]
- lib_books_nr = lib_stats[0]
- lib_signup = lib_stats[1]
- lib_parallel = lib_stats[2]
- lib_books = inp[current_lib_idx + 1]
- library_stats[libs_read] = {
- "lib_books_nr": int(lib_books_nr),
- "lib_signup": int(lib_signup),
- "lib_parallel": int(lib_parallel),
- "lib_books": {int(bk) for bk in lib_books}
- }
- current_lib_idx += 2
- libs_read += 1
- return {
- "books_nr": books_nr,
- "libs_nr": libs_nr,
- "library_stats": library_stats,
- "book_prices": book_prices,
- "days": days,
- }
- def get_per_lib_unique_book_stats(problem_stats):
- lib_stats = problem_stats['library_stats']
- libs_books_stats = {lib: set(lib_stats[lib]['lib_books']) for lib in lib_stats}
- return libs_books_stats
- def get_uniqueness(lb_stats):
- uniques_per_lib = {}
- for lib in lb_stats:
- rest = set()
- lib_books = lb_stats[lib]
- for lib2 in lb_stats:
- if lib == lib2:
- continue
- rest.update(lb_stats[lib2])
- uniques_per_lib[lib] = lib_books - rest
- return uniques_per_lib
- if __name__ == '__main__':
- problem_stats = get_stats(load_books("c"))
- lb_stats = get_per_lib_unique_book_stats(problem_stats)
- #
- # pprint.pprint(problem_stats)
- # pprint.pprint(lb_stats)
- uniqueness_stats = get_uniqueness(lb_stats)
- # pprint.pprint(uniqueness_stats)
- total_score = sum([len(uniqueness_stats[lib]) for lib in uniqueness_stats])
- print(total_score)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement