diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-23 12:28:24 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-23 12:28:24 +0200 |
| commit | 2a6189bda8dd9f39d9177ffca2330101e914d8f0 (patch) | |
| tree | 9e42602902173fa5537d8b44604b25461dc2fe25 /ride/climb.go | |
| parent | e5e7870eafbfc80f4668d2c0d0995149ddc2f60a (diff) | |
Suppress overlapping detected climbs when official claims are unsorted
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 } |
