From 97f4d544d9ad0b80edd44d248867213250700240 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Sun, 28 Jul 2024 18:38:09 +0200 Subject: fix: One more iteration to find the best climb --- ride/climb.go | 7 +++++++ ride/climb_test.go | 11 ++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) (limited to 'ride') 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])) } -- cgit v1.2.3