Es el tiempo de recuperación, idiota
O algo así es como dice el articulo que apareció en la revista del mes de Octubre del 2011 ‘Running Times’, del atleta y escritor Peter Magil;. Allí el nos muestra como calcular cuanto descansar después de un entrenamiento usando las tablas creadas por el científico Tom Schwarts.
Mi implementación en Python a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #!/usr/bin/env python # Calculate days of recovery after a race. Based on the article appeared on the Running times magazine # "It's the Recovery Stupid" by Pete Magill, using Tom Schwartz tables # author: josevnz@kodegeek.com # http://kodegeek.com/blog import sys class Recovery: def __init__(self): self.__ages = { '20':0, '30':1, '40':2, '50':3, '60':4, '70':5, '80':6 } self.__fitnessLevel = { 'LOW':0, 'MEDIUM':1, 'HIGH':2 } self.__daysBetweenWorkouts = [ [ 4.0, 3.0, 2.5 ], [ 5.0, 4.0, 3.0 ], [ 6.0, 4.5, 3.5 ], [ 7.0, 5.0, 4.0 ], [ 7.5, 6.0, 4.5 ], [ 8.0, 6.5, 5.0 ], [ 9.0, 7.0, 5.5 ] ] self.__races = { '5K':0, '8K':1, '10K':2, '15K':3, '1/2 Mar':4, 'Mar':5 } self.__intensityWorkout = { 'EASY':0, 'MEDIUM':1, 'HARD':2 } self.__recoveryDaysAfterRace = [ [ 2, 3, 5 ], [ 3, 5, 8 ], [ 3.5, 6, 9 ], [ 4, 7, 11 ], [ 5.5, 9, 14 ], [ 9, 17, 26 ] ] self.__adjustment = { '20':1.0, '30':1.1, '40':1.2 , '50':1.3, '60':1.4, '70':1.5, '80':1.6 } def getAgeBracket(self, age): try: dAge = int(age) if dAge < 0: raise Exception("Invalid age value: %s" % age) for bracket in [ 20, 30, 40, 40, 50, 70, 80 ]: if dAge >= bracket and dAge < = (bracket + 9): return str(bracket) # > 80 years return 80 except (Exception), exp: raise Exception("Invalid age: %s" % age) def getDaysBetweenWorkouts(self, age, level): try: bracket = self.getAgeBracket(age) dBracket = self.__ages[bracket] intensity = self.__fitnessLevel[level] return self.__daysBetweenWorkouts[dBracket][intensity] * self.__adjustment[bracket] except (Exception), exp: raise Exception("Invalid age or level: age=%s, level=%s" % (age, level)) def getDaysAfterRace(self, age, race, level): try: bracket = self.getAgeBracket(age) dBracket = self.__races[race] intensity = self.__intensityWorkout[level] return self.__recoveryDaysAfterRace[dBracket][intensity] * self.__adjustment[bracket] except (Exception), exp: raise Exception("Invalid age race type or level: age=%s, race=%s, level=%s" % (age, race, level)) if __name__ == "__main__": recovery = Recovery() arg = sys.argv[1:] days = 0 if len(arg) == 2: days = recovery.getDaysBetweenWorkouts(arg[0], arg[1]) print "Days: %2.2f, for age: '%s' and level: '%s'" % (days, arg[0], arg[1]) elif len(arg) == 3: days = recovery.getDaysAfterRace(arg[0], arg[1], arg[2]) print "Days: %2.2f, for age: '%s' and level: '%s', race=%s" % (days, arg[0], arg[2], arg[1]) else: sys.exit(192) # "com/kodegeek/fitness/recoveryrun.py" 76L, 2539C written |
Así que por ejemplo, si corremos una carrera de 5K con todo y tenemos 35 años de edad:
1 2 3 | Macintosh:python josevnz$ ./com/kodegeek/fitness/recoveryrun.py 35 5K HARD Days: 5.50, for age: '35' and level: 'HARD', race=5K Macintosh:python josevnz$ |
¿Y si no es una carrera, pero un entrenamiento fuerte y soy medianamente resistente?
1 2 3 | Macintosh:python josevnz$ ./com/kodegeek/fitness/recoveryrun.py 35 MEDIUM Days: 4.40, for age: '35' and level: 'MEDIUM' Macintosh:python josevnz$ |
Por cierto, hoy es mi día de descanso entre entrenamientos. Así que es hora de ejercitar el lado Geek un poquito. Estoy pensando en abrir un nuevo proyecto de código abierto para ir dejando estos pedazos de código relacionados con correr y ejercicios de resistencia. ¿Les suena buena idea?
Bueno, hasta la próxima entrega.
–José



Comentarios recientes