class Gruppe: def __init__(self, krav): self._krav = krav self._personer = [] def legg_til_personer(self, personer): for p in personer: self._personer.append(p) def hent_personer(self): return self._personer def hent_krav(self): return self._krav class Rom: def __init__(self, romnummer, ant_senger, fasiliteter): self._romnummer = romnummer self._ant_senger = ant_senger self._fasiliteter = fasiliteter self._gjester = [] self._ledig = True def reserver(self, gjester): self._ledig = False for gjest in gjester: self._gjester.append(gjest) def hent_ant_senger(self): return self._ant_senger def passer(self, krav): if not self._ledig: return False else: for k in krav: if k not in self._fasiliteter: return False return True def __str__(self): tekstreng = f"Rom {self._romnummer} har antall senger: {self._ant_senger}" if len(self._fasiliteter) > 0: tekstreng += " Og har fasiliteter: " for fasilitet in fasiliteter: tekstreng += fasilitet + " " else: tekstreng += " Ingen fasiliteter" return tekstreng class Hotell: def __init__(self, hotellnavn): self._hotellnavn = hotellnavn self._rom = {} filnavn = self._hotellnavn + ".txt" fil = open(filnavn, "r") for linje in fil: deler = linje.strip().split() romnummer = int(deler[0]) ant_senger = int(deler[1]) if len(deler) > 2: fasiliteter = deler[2:] else: fasiliteter = [] self._rom[romnummer] = Rom(romnummer, ant_senger, fasiliteter) fil.close() def reserver_rom(self, romnummer, gjester): if romnummer in self._rom: rom = self._rom[romnummer] rom.reserver(gjester) else: print("Rom finnes ikke") def finn_passende_rom(self, krav): passende_rom = [] for rom in self._rom.values(): if rom.passer(krav): passende_rom.append(rom) return passende_rom class Reserverasjonsystem: def __init__(self, hotellnavn_liste): self._hoteller = {} for navn in hotellnavn_liste: self._hoteller[navn] = Hotell(navn) def reserver_rom_i_hotell(self, hotellnavn, romnummer, gjester): if hotellnavn in self._hoteller: self._hoteller[hotellnavn].reserver_rom(romnummer, gjester) def _finn_alle_passende_rom(self, krav): passende = {} for navn in self._hoteller: romliste = self._hoteller[navn].finn_passende_rom(krav) if len(romliste) > 0: passende[navn] = romliste return passende def gruppe_reservasjon(self, gruppe): krav = gruppe.hent_krav() personer = gruppe.hent_personer() passende = self._finn_alle_passende_rom(krav) if len(passende) == 0: return "Ingen passende rom" for hotellnavn in passende: romliste = passende[hotellnavn] for rom in romliste: if len(personer) == 0: break # bruker break som er d?rlig ant_senger = rom.hent_ant_senger() gjester_til_rom = [] while #