How many machines are past calibration
Every machine has a last calibration date and a calibration interval in days. Count how many should have been recalibrated by today.
- A machine is overdue when today minus its last service is strictly greater than its interval.
- An interval of zero or less is a broken policy and counts as always overdue.
calibration_overdue(machines: list<Machine>, today: int) → int
Where you start
def calibration_overdue(machines: list[Machine], today: int) -> int:
Worked examples
| Call | Result |
|---|---|
calibration_overdue([Machine(last_service=100, interval_days=10), Machine(last_service=95, interval_days=10), Machine(last_service=110, interval_days=10)], 110) | 1 |
calibration_overdue([Machine(last_service=0, interval_days=0)], 100) | 1 |
calibration_overdue([Machine(last_service=100, interval_days=20), Machine(last_service=100, interval_days=20)], 119) | 0 |
calibration_overdue([], 50) | 0 |
Hint
Run the strict comparison, with the broken-policy case short-circuiting.
Reference solution in Python
def calibration_overdue(machines: list[Machine], today: int) -> int:
return sum(1 for m in machines if m.interval_days <= 0 or today - m.last_service > m.interval_days)