An interview question that came my way and spoke to my interests:

Your task is to determine which three horses out of a group of 25 horses are the fastest. You may race up to five horses at a time. How many races are required?

Have a crack at it yourself, if you’re so inclined. There are spoilers below the line.


Bounds

There must be at least five races: each horse must appear in a race.

The most brutal way I can think of requires at most 11 races: pick any five horses in the competition and race them. Remove the slowest two from the competition. Repeat until you’ve eliminated 22 horses.

So that gives us a lower bound of 5 and an upper bound of 11 without doing too much thinking.

My approach

I think it can be done in seven races, and would be extremely surprised if it could reliably be done in six.

Here’s my approach:

  • Split the 25 horses into five groups of five, and race each group. (5 races)
  • Race the five horses that won their races, determining a champion and a runner-up (1 race)
  • The most complicated one: the final race involves
    • The second- and third-placed horses in the champion’s first race
    • The second- and third-placed horses in the champion’s second race
    • The second-placed horse in the runner-up’s first race

The champion and the two fastest horses in the final race are (in that order) the fastest three horses.

Why?

In this system, the final race involves every horse that hasn’t been beaten by at least three other horses – taking ‘beaten’ to include a horse that’s definitely faster being beaten. (For example, take the race won by the horse that finishes third in race six: every horse in that race except the winner must be slower than the winner, as well as the first two horses in race six).


I thought that was an interesting question – did you come up with a different approach? Can you do it in fewer races? I’d love to hear about it if so!