Clamp a day into a billing term
A billing window runs from day 1 to day termDays. Clamp any given day to within that window.
- Return day clamped into the range 1..termDays.
- If termDays is zero or negative, return 0.
clampToTerm(termDays: int, day: int) → int
Go needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.
Where you start
func clampToTerm(termDays int, day int) int {
}
Worked examples
| Call | Result |
|---|---|
clampToTerm(31, 35) | 31 |
clampToTerm(31, 0) | 1 |
clampToTerm(31, 20) | 20 |
clampToTerm(0, 5) | 0 |
Hint
A pair of comparisons: too low pulls up, too high pulls down.
Reference solution in Go
func clampToTerm(termDays int, day int) int {
if termDays <= 0 {
return 0
}
if day < 1 {
return 1
}
if day > termDays {
return termDays
}
return day
}