#Oppgave 4a -> 4e class Gruppe: def __init__(self, krav): self._krav = krav self._navn = [] def legg_til_personer(self, personnavn): for i in personnavn: self._navn.append(i) def legg_til_personer2(self, personnavn): self._navn += personnavn def hent_personer(self): return self._navn def hent_krav(self): return self._krav class Rom: def __init__(self, romnummer, antall_senger, fasisliter): self._romnummer = romnummer self._antall_senger = antall_senger self._fasiliteter = fasisliter #liste self._gjester = [] self._utleid = False def reserver(self, angi_navn): self._gjester = angi_navn self._utleid = True def hent_ant_senger(self): return self._antall_senger def passer(self, fasiliteter): #vi antar at fasiliteter er en liste med strenger if self._utleid: return False for fasilitet in fasiliteter: if fasilitet not in self._fasiliteter: return False return True def passer2(self, fasiliteter): if self._utleid: return False if set(fasiliteter) in set(self._fasiliteter): return True return False def __str__(self): s = f"romnummer: {self._romnummer}. Antall senger: {self._hent_ant_senger()}. Fasiliteter: {self._fasiliteter} " return s class Hotell: def __init__(self, hotellnavn): self._hotellnavn = hotellnavn self._rom = self._les_fra_fil() #self._les_fra_fil2() def _les_fra_fil(self): midlertidig_ordbok = {} with open(self._hotellnavn + "txt", "r") as fil: for linje in fil: linje = linje.split() romnr = int(linje[0]) ant_senger = int(linje[1]) if(len(linje) > 2): #dette kan sl? ut feil hvis det ikke er fasiliteter tilh?rende rommet. fasiliteter = linje[2:] rom = Rom(romnr,ant_senger, fasiliteter) midlertidig_ordbok[romnr] = rom return midlertidig_ordbok def _les_fra_fil2(self): with open(self._hotellnavn + "txt", "r") as fil: for linje in fil: linje = linje.split() romnr = int(linje[0]) ant_senger = int(linje[1]) if(len(linje) > 2): #dette kan sl? ut feil hvis det ikke er fasiliteter tilh?rende rommet. fasiliteter = linje[2:] rom = Rom(romnr,ant_senger, fasiliteter) self._rom[romnr] = rom def reserver_rom(self, romnr, gjester): rom_reserveres = self._rom[romnr] rom_reserveres.reserver(gjester) def finn_passende_rom(self,krav): #krav er en liste liste = [] for rom in self._rom.values(): if rom.passer(krav): liste.append(rom) return liste def hent_hotellnavn(self): return self._hotellnavn class Reservasjonssystem: def __init__(self, hotellnavn_liste): self._hoteller = {} for hotellnavn in hotellnavn_liste: hotell = Hotell(hotellnavn) self._hoteller[hotellnavn] = hotell def reserver_rom_i_hotell(self, hotellnavn, romnr, gjester): hotell = self._hoteller[hotellnavn] hotell.reserver_rom(romnr, gjester) #4e def _finn_alle_passende_rom(self, krav_liste): hotell_rom = {} for hotell in self._hoteller.values(): passende_rom_liste = hotell.finn_passende_rom(krav_liste) if passende_rom_liste != []: hotell_rom[hotell.hent_hotellnavn()] = passende_rom_liste return hotell_rom