Spaces:
Sleeping
Sleeping
| from .Constant import Constant | |
| class Reservation: | |
| NR = -1 | |
| _reservationPool = {} | |
| def __init__(self, day: int, time: int, room: int): | |
| self.Day = day | |
| self.Time = time | |
| self.Room = room | |
| def parse(hashCode): | |
| reservation = Reservation._reservationPool.get(hashCode) | |
| if reservation is None: | |
| day = hashCode // (Constant.DAY_HOURS * Reservation.NR) | |
| hashCode2 = hashCode - (day * Constant.DAY_HOURS * Reservation.NR) | |
| room = hashCode2 // Constant.DAY_HOURS | |
| time = hashCode2 % Constant.DAY_HOURS | |
| reservation = Reservation(day, time, room) | |
| Reservation._reservationPool[hashCode] = reservation | |
| return reservation | |
| def getHashCode(day: int, time: int, room: int) -> int: | |
| return day * Reservation.NR * Constant.DAY_HOURS + room * Constant.DAY_HOURS + time | |
| def getReservation(nr: int, day: int, time: int, room: int): | |
| if nr != Reservation.NR and nr > 0: | |
| Reservation.NR = nr | |
| Reservation._reservationPool.clear() | |
| hashCode = Reservation.getHashCode(day, time, room) | |
| reservation = Reservation.parse(hashCode) | |
| if reservation is None: | |
| reservation = Reservation(day, time, room) | |
| Reservation._reservationPool[hashCode] = reservation | |
| return reservation | |
| def __hash__(self) -> int: | |
| return Reservation.getHashCode(self.Day, self.Time, self.Room) | |
| def __eq__(self, other): | |
| if not isinstance(other, self.__class__): | |
| return False | |
| return hash(self) == hash(other) | |
| def __ne__(self, other): | |
| return not self.__eq__(other) | |
| def __str__(self): | |
| return "Day: " + str(self.Day) + ", " + "Room: " + str(self.Room) + ", Time: " + str(self.Time) | |