diff options
| -rw-r--r-- | README.md | 3 | ||||
| -rw-r--r-- | ride/climb.go | 7 | ||||
| -rw-r--r-- | ride/climb_test.go | 11 |
3 files changed, 13 insertions, 8 deletions
@@ -28,10 +28,7 @@ - CI / Tooling - Tests - linter for calls to `make([]..., n)` that then use append -- try this algo: inc end while score inc, then inc start while score inc, again until optimum ## Examples **[Pogacar 21 july 2022](https://www.strava.com/activities/7505784085)** - -- 43.0-45.5 ? diff --git a/ride/climb.go b/ride/climb.go index 3b3d6dc..cff2b39 100644 --- a/ride/climb.go +++ b/ride/climb.go @@ -79,6 +79,13 @@ func bestClimbBetween(points []Point, start int, end int) Climb { bestScore = score } } + for i := bestStart; i < bestEnd; i++ { + score := Score(points, i, bestEnd) + if score > bestScore { + bestStart = i + bestScore = score + } + } climb := Climb{bestStart, bestEnd} kcore.Assert(climb.start < climb.end, "empty climb") diff --git a/ride/climb_test.go b/ride/climb_test.go index 23c7a2e..65b6b54 100644 --- a/ride/climb_test.go +++ b/ride/climb_test.go @@ -80,10 +80,11 @@ func TestPogacar20220721(t *testing.T) { r := ride.FromGPX(gpxContent) climbs := r.AllClimbs() - assert.Len(t, climbs, 5) + assert.Len(t, climbs, 6) assert.Equal(t, "0.6km-5.6km: 5.0km at 3.5% (62 pts - Cat 4)", r.String(climbs[0])) - assert.Equal(t, "60.0km-76.4km: 16.4km at 7.2% (854 pts - HC)", r.String(climbs[1])) - assert.Equal(t, "83.8km-85.9km: 2.0km at 5.4% (59 pts - Cat 4)", r.String(climbs[2])) - assert.Equal(t, "99.2km-109.3km: 10.2km at 8.4% (710 pts - HC)", r.String(climbs[3])) - assert.Equal(t, "128.6km-142.2km: 13.6km at 7.8% (832 pts - HC)", r.String(climbs[4])) + assert.Equal(t, "42.9km-45.2km: 2.3km at 5.0% (59 pts - Cat 4)", r.String(climbs[1])) + assert.Equal(t, "60.0km-76.4km: 16.4km at 7.2% (854 pts - HC)", r.String(climbs[2])) + assert.Equal(t, "83.8km-85.9km: 2.0km at 5.4% (59 pts - Cat 4)", r.String(climbs[3])) + assert.Equal(t, "99.2km-109.3km: 10.2km at 8.4% (710 pts - HC)", r.String(climbs[4])) + assert.Equal(t, "128.6km-142.2km: 13.6km at 7.8% (832 pts - HC)", r.String(climbs[5])) } |