Exercise 3 solution (Python) def naismith(km, ascent_m): return km / 5 * 60 + ascent_m / 10 def clock(minutes): return f"{int(minutes // 60):02d}:{int(round(minutes % 60)):02d}" start = 9 * 60 + 30 out = naismith(5, 400) # 100 min back = naismith(5, 0) # 60 min moving = out + back for mult in (1.0, 1.3): total = moving * mult total += total / 60 * 5 # 5 minutes of breaks per hour print(mult, round(total), clock(start + total)) # latest turn-round time to be down by 15:30, using the slow multiplier turn = 15 * 60 + 30 - (back * 1.3 * (1 + 5 / 60)) print("Turn round by", clock(turn)) Output: 1.0 173 12:23 1.3 225 13:15 Turn round by 14:06 (a) With the plain rule plus breaks the walk takes about 173 minutes and finishes at 12:23. (b) With a 1.3 multiplier it takes about 225 minutes and finishes at 13:15. Either way there is a comfortable margin before 15:30. (c) If the group is still going up at 14:06 (the latest time that still gets them down by 15:30 at the slow pace), they should turn round whatever the distance still to go. Fixing this time before you set out is the point: it takes the decision away from the tired, summit-hungry version of you.