Books · The Fiddler: Solutions
Chapter 50
Can You Race Against Zeno?
You run a -metre race starting at a -minute pace. When you reach the halfway point ( m), you speed up by . At the three-quarter point you speed up another , and so on: every time you reach the midpoint between your current position and the finish, your speed jumps by . How long does the race take?
The Fiddler, Zach Wissner-Gross, June 13, 2025(original post)
Solution
Let the base speed be (so minutes). The -th segment covers half of the remaining distance, , at speed , taking Summing the geometric series,
The computation
Run the race rather than the series: at base pace minutes per metre, repeatedly cover half the remaining distance at the current speed, add the time, then speed up by . The total converges to .
pace0 = 24 / 5000; remaining = 5000.0; mult = 1.0; T = 0.0
for _ in range(2000): # halving leaves the tail negligible
seg = remaining / 2
T += seg * pace0 / mult # time for this segment at current speed
remaining -= seg; mult *= 1.1 # reach the new midpoint, speed up 10%
print(round(T, 4)) # 22.0
Extra Credit
Now the speed-up is continuous: wherever you are on the course, you run faster than you were when you were twice as far from the finish. The speed must rise smoothly. How long does the race take?
Solution
Write for your speed when metres from the finish. The rule is . A power law satisfies it when , i.e. , and smoothness (a continuous, monotone speed) forces this single solution. With , (The source’s value is paywalled; this closed form is my own.)
The computation
Fix from the scaling rule and the finish-line pace, then numerically integrate the race time rather than evaluating the closed form.
from math import log2
from scipy.integrate import quad
a = -log2(1.1) # v(x) = C x^a satisfies v(x) = 1.1 v(2x)
C = (5000 / 24) / 5000**a # so that v(5000) = 5000/24
T, _ = quad(lambda x: x**(-a) / C, 0, 5000)
print(round(T, 4)) # 21.0988