Läuft nur unter Python 3.4 auf unixoiden Betriebssystemen (wg. SIGALRM). Du willst ja sowieso auf andere Signale reagieren, also einfach die einsetzen. Man kann es auch leicht nach Python 2.7 portieren, Enums zB. gibt es als Backport. Die DB ist ein Dummy und muss durch eine richtige ersetzt werden, ebenso alles, was ich zu Demo-Zwecken mittels random simuliert habe.
Wenn man es laufen lässt, kommt ungefähr sowas als Ausgabe:
Code: Alles auswählen
Door(1) access for [Staffer(5), Staffer(1), Staffer(2)]
Door(2) access for [Staffer(2), Staffer(5), Staffer(1), Staffer(3)]
Door(3) access for [Staffer(4), Staffer(2)]
NOT opening Door(3) for Staffer(3)
opening Door(2) for Staffer(2)
NOT opening Door(1) for Staffer(3)
Door(1) access for [Staffer(1)]
Door(2) access for [Staffer(5), Staffer(1), Staffer(4)]
Door(3) access for [Staffer(3), Staffer(5)]
NOT opening Door(2) for Staffer(2)
opening Door(1) for Staffer(1)
opening Door(2) for Staffer(4)
Door(1) access for [Staffer(2), Staffer(4)]
Door(2) access for [Staffer(2)]
Door(3) access for [Staffer(1), Staffer(5), Staffer(2), Staffer(4)]
NOT opening Door(3) for Staffer(3)
opening Door(2) for Staffer(2)
NOT opening Door(1) for Staffer(3)
Door(1) access for [Staffer(3), Staffer(4)]
Door(2) access for [Staffer(1)]
Door(3) access for [Staffer(1)]
opening Door(3) for Staffer(1)
NOT opening Door(2) for Staffer(5)
NOT opening Door(3) for Staffer(2)
...