Hier ist meine Loesung:
func auslastungAusrechnen(belegung: Array<Belegung>, startDatum: Date, endDatum: Date, station: Station) -> Int {
// Rechne wie viel Auslastung 80% der Gesamtverfuegbarkeit entspricht
let auslastung80Prozent = Int(station.anzahlBetten * 0.8)
// Rechne Auslastung pro Tag
var tage: [Date: Int] = [:] // Dictionary bzw. Map! Z.B. std::map<Date, int> in C++
for datum in startDatum...endDatum {
tage[datum] = 0
for b in belegung {
if b.stationId == station.stationId && b.datumVon <= datum && b.datumBis > datum {
tage[datum]! += 1
}
}
}
// Rechne Anzahl Tage an denen Auslastung mehr als 80% war
var ergebnis = 0
for (_, belegungen) in tage {
if belegungen > auslastung80Prozent {
ergebnis += 1
}
}
return ergebnis
}
In dem Pseudocode den ich in der Prüfung geschrieben hab, hatte ich die map so deklariert:
tage := new Map<Date, Int>
Wichtig zu bedenken ist, dass Belegung::datumBis EXKLUSIV war: Belegungen sollten nicht für den Tag gezählt werden an dem sie enden. Das sehe ich bei @user2001 und bei @BeppeCSharpNauter falsch gelöst.