Reverse engineering the Strava Suffer Score algorithm

3 July 2017

Few months ago I purchased a Suunto Ambit3 Peak after four years, and thousands of kilometres, with my faithful Polar RC3. The fact anyone can build small apps for this device is one of the main reasons that made me opt for it instead of its competitors.

Being a big fan of Strava I had the idea of reverse engineering the Strava Suffer Score algorithm to make it an app for all the Suunto users out there.

At the end these are the results:

And heres’s the final code from the Movescount App Zone editor:

RESULT = SCORE;
if(SUUNTO_HR >= SUUNTO_USER_REST_HR && SUUNTO_HR <= 60*SUUNTO_USER_MAX_HR/100) {
  SCORE = SCORE + 25/3600;
} else if(SUUNTO_HR > 60*SUUNTO_USER_MAX_HR/100 && SUUNTO_HR <= 70*SUUNTO_USER_MAX_HR/100) {
  SCORE = SCORE + 60/3600;
} else if(SUUNTO_HR > 70*SUUNTO_USER_MAX_HR/100 && SUUNTO_HR <= 80*SUUNTO_USER_MAX_HR/100) {
  SCORE = SCORE + 115/3600;
} else if(SUUNTO_HR > 80*SUUNTO_USER_MAX_HR/100 && SUUNTO_HR < 90*SUUNTO_USER_MAX_HR/100) {
  SCORE = SCORE + 250/3600;
} else {
  SCORE = SCORE + 300/3600;
}

A list of case would have been better, unfortunately the available syntax is really limited.

Movescount doesn’t let you edit the content of your app when this has been downloaded by more then one user, so the executable code won’t look as “clean” as the one above.