Count the working days in a span
An SLA clock only runs on working days, so a span of calendar days has to be reduced to the ones that count.
- Weekdays are numbered 0 for Monday through 6 for Sunday.
- Saturday and Sunday do not count.
- The span starts on the given weekday and runs for that many consecutive days.
- A span of zero or less, or a weekday outside 0 to 6, counts nothing.
business_days(start_weekday: int, span_days: int) → int
Where you start
def business_days(start_weekday: int, span_days: int) -> int:
Worked examples
| Call | Result |
|---|---|
business_days(0, 7) | 5 |
business_days(0, 5) | 5 |
business_days(5, 2) | 0 |
business_days(4, 4) | 2 |
Hint
Walk the days and take the weekday modulo 7, or work out the whole weeks first and handle the remainder.
Reference solution in Python
def business_days(start_weekday: int, span_days: int) -> int:
if span_days <= 0 or start_weekday < 0 or start_weekday > 6:
return 0
return sum(1 for i in range(span_days) if (start_weekday + i) % 7 < 5)