diff options
Diffstat (limited to 'ride/climb.go')
| -rw-r--r-- | ride/climb.go | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ride/climb.go b/ride/climb.go index f42a9a2..647cf9a 100644 --- a/ride/climb.go +++ b/ride/climb.go @@ -270,12 +270,17 @@ func isValidClaim(claim Range, routeLen int) bool { // freeRegions returns the maximal sub-ranges of [rStart, rEnd] that are not // covered by any claimed range, after discarding claims that fall outside. func freeRegions(rStart, rEnd int, claimed []Range) []Range { - regions := make([]Range, 0, len(claimed)+1) - current := rStart + valid := make([]Range, 0, len(claimed)) for _, claim := range claimed { if !isValidClaim(claim, rEnd+1) { continue } + valid = append(valid, claim) + } + slices.SortFunc(valid, func(a, b Range) int { return a.Start - b.Start }) + regions := make([]Range, 0, len(valid)+1) + current := rStart + for _, claim := range valid { if claim.End < current { continue } |
