UniquePriorityQueue
Cette classe est une implémentation de file de priorité n'autorisant pas deux éléments à avoir la même priorité, et avec quelques fonctions utilisées dans le reste du projet pour faciliter l'utilisation de la file.
La file est simplement implémentée comme une liste de tuples contenants la priorité de l'élément et l'élément lui même. La liste est maintenue triée par priorité croissante, ce qui permet de retirer directement le premier élément pour récupérer celui dont la priorité est minimale.
De plus, quelques opérations sont implémentées pour plus de facilité à manipuler la file :
peekpermet de récupérer un élément de la file à une certaine position sans l'enlever de la filefindpermet de récupérer un élément de la file ayant une certaine priorité si il existe, ou None sinonfilterpermet de récupérer les éléments de la file répondants à certains critèresmappermet d'appliquer une fonction à tous les éléments de la file, et de les récupérer sous la forme d'une liste
L'intérêt d'ajouter de telles fonction est que nous en avions besoin pour réaliser certaines opérations facilement dans le reste du projet, mais de tout de même fournir une certaine abstraction pour ne pas avoir à changer plusieurs fichiers si l'implémentation de la file changeait.