Das wäre dann mal mein Lösungsvorschlag in Pseudo-Code geschrieben.
FUNKTION ermittleVerfügbarkeit (Gerätetyp als Integer, eBeginn
als DateTime, eDauer als Integer) als Integer
i als Integer = 0
j als Integer = 0
geräteIDs[] als Integer = getGeräteListe(Gerätetyp)
SOLANGE i <= ANZAHL(geräteIDs) – 1
buchungsdaten = getResDat(geräteIDs(i))
SOLANGE j <= ANZAHL(buchungsdaten) – 1
If eBeginn < buchungsdaten.vonDat AND
eDauer <(buchungsdaten.vonDat – eBeginn)
OR
eBeginn > buchungsdaten.bisDat THEN
RETURN geräteIDs(i)
ENDE IF
ZÄHLE j + 1
ENDE SOLANGE
ZÄHLE i + 1
ENDE SOLANGE
RETURN 0
ENDE FUNKTION