CloudCoder Python feladatgyujtemeny/foglalas

A MathWikiből

Itt az összes feladat együttes megoldása:

class Foglalas(object):
    def __init__(self, nev, helyek):
        self.nev = nev
        self.helyek = helyek
 
    def nem_foglalt(self, lehetosegek):
        return [lehetoseg for lehetoseg in lehetosegek if lehetoseg not in self.helyek]
 
    def valtoztatas(self, uj_helyek):
        self.helyek = uj_helyek
 
def szabad(foglalasok, osszes_ules):
    ulesek = osszes_ules
    for foglalas in foglalasok:
        ulesek = foglalas.nem_foglalt(ulesek)
 
    return ulesek
 
def foglal(foglalasok, osszes_ules, nev, darab):
    szabadok = szabad(foglalasok, osszes_ules)
    helyek = []
    for ules in osszes_ules:
        if ules in szabadok:
            helyek.append(ules)
            if len(helyek) >= darab:
                return Foglalas(nev, helyek)
        else:
            helyek = []
    raise RuntimeError("Nincs eleg ules!")
Személyes eszközök