diff --git a/03/ex3/ft_achievement_tracker.py b/03/ex3/ft_achievement_tracker.py index 2257fcf..0a41be3 100644 --- a/03/ex3/ft_achievement_tracker.py +++ b/03/ex3/ft_achievement_tracker.py @@ -1,35 +1,30 @@ -class Player: - __name: str - __achievements: set[str] - - def __init__(self, name:str, achievements: set[str]) -> None: - self.__name = name - self.__achievements = achievements - - def get_name(self) -> str: - return self.__name - - def get_achievements(self) -> set[str]: - return self.__achievements +def tracker_system(players: dict[str, list[str]]) -> None: + print("=== Achievement Tracker System ===\n") + for player in players: + print(f"Player {player} achievements: {set((players[player]))}") + print("\n=== Achievement Analytics ===") + unique_achievements: set[str] = set(()) + for player in players: + unique_achievements = unique_achievements | set((players[player])) + print(f"All unique achievements: {unique_achievements}") + print(f"Total unique achievements: {len(unique_achievements)}") + common_achievements: set[str] = unique_achievements.intersection(players) + print(f"\nCommon to all players: {common_achievements}") + rare_achievements: set[str] = set(()) + for player in players: + temp = set((players[player])) + for other in players: + if other != player: + temp = temp - set((players[other])) + rare_achievements = rare_achievements & temp + print(f"Rare achievements (1 player): {rare_achievements}\n") if __name__ == "__main__": - players = [ - Player("Alice", set(('first_kill', 'level_10', 'treasure_hunter', 'speed_demon'))), - Player("Bob",set(('first_kill', 'level_10', 'boss_slayer', 'collector'))), - Player("Charlie", set(('level_10', 'treasure_hunter', 'boss_slayer', 'speed_demon', 'perfectionist'))) - ] - print("=== Achievement Tracker System ===\n") - for n in players: - print(f"Player {n.get_name()} achievements: {n.get_achievements()}") - print("\n=== Achievement Analytics ===") - unique_achievements = players[0].get_achievements() | players[1].get_achievements() | players[2].get_achievements() - print(f"All unique achievements: {unique_achievements}") - print(f"Total unique achievements: {len(unique_achievements)}") - common_achievements = players[0].get_achievements() & players[1].get_achievements() & players[2].get_achievements() - print(f"\nCommon to all players: {common_achievements}") - p0_achievements = players[0].get_achievements() - players[1].get_achievements() - players[2].get_achievements() - p1_achievements = players[0].get_achievements() - players[1].get_achievements() - players[2].get_achievements() - p2_achievements = players[0].get_achievements() - players[1].get_achievements() - players[2].get_achievements() - print(f"Rare achievements (1 player): {rare_achievements}") - + players = { + "Alice": ['first_kill', 'level_10', 'treasure_hunter', 'speed_demon'], + "Bob": ['first_kill', 'level_10', 'boss_slayer', 'collector'], + "Charlie": ['level_10', 'treasure_hunter', 'boss_slayer', 'speed_demon', 'perfectionist'] + } +# players = {'alice': ['first_blood', 'pixel_p:unique_achievementserfect', 'speed_runner', 'first_blood', 'first_blood'], 'bob': ['level_master', 'boss_hunter', 'treasure_seeker', 'level_master', 'level_master'], 'charlie': ['treasure_seeker', 'boss_hunter', 'combo_king', 'first_blood', 'boss_hunter', 'first_blood', 'boss_hunter', 'first_blood'], 'diana': ['first_blood', 'combo_king', 'level_master', 'treasure_seeker', 'speed_runner', 'combo_king', 'combo_king', 'level_master'], 'eve': ['level_master', 'treasure_seeker', 'first_blood', 'treasure_seeker', 'first_blood', 'treasure_seeker'], 'frank': ['explorer', 'boss_hunter', 'first_blood', 'explorer', 'first_blood', 'boss_hunter']} + tracker_system(players)