For n=2 the solution is easy, as others have pointed out.
For n≥3, everyone executes the following algorithm (which works even if everyone has to move at a constant speed):
when you wake up:
if (there exists a rational angle):
let angle = ABC
if you're B:
press the button, then stand still
else:
walk towards B in a straight line
press button at the point B
else:
let {B, C} be the pair of points with the shortest distance
let B be the one with the larger distance from the center of mass of points outside {B, C}
if you're B:
press the button, then stand still
if you're C:
walk towards B in a straight line
press button at the point B
walk back an infinitesimal distance
if neither:
say you're A
walk an infinitesimal distance to make angle ABC rational
then walk towards B in a straight line
press button at the point B
walk back an infinitesimal distance
The idea is similar to DaemonicSigil’s, except I use rational angles to communicate information instead of rational distances. Since my motion trajectories are more regular (piecewise linear), I face the additional problem that someone can wake up and use their radar while the first person to wake up is moving some fixed distance ε to make some angle rational. To fix this, I have everyone coordinate on a point which with probability 1 won’t be affected by small perturbations of the configuration of points.
The rest is just working out the technical details to ensure that this solution always works. To implement it as a proper algorithm I also have to say how to calculate these infinitesimal distances depending on the configuration of points displayed by the radar, and essentially you need to pick ε small enough such that even if everyone moves by that distance, the following two are left invariant almost surely:
The rank order relation of distances to the center of mass
The pair of points with the smallest distance between them
There’s going to be such a valid choice of ε almost surely, so this solution works.
Here is my solution:
For n=2 the solution is easy, as others have pointed out.
For n≥3, everyone executes the following algorithm (which works even if everyone has to move at a constant speed):
The idea is similar to DaemonicSigil’s, except I use rational angles to communicate information instead of rational distances. Since my motion trajectories are more regular (piecewise linear), I face the additional problem that someone can wake up and use their radar while the first person to wake up is moving some fixed distance ε to make some angle rational. To fix this, I have everyone coordinate on a point which with probability 1 won’t be affected by small perturbations of the configuration of points.
The rest is just working out the technical details to ensure that this solution always works. To implement it as a proper algorithm I also have to say how to calculate these infinitesimal distances depending on the configuration of points displayed by the radar, and essentially you need to pick ε small enough such that even if everyone moves by that distance, the following two are left invariant almost surely:
The rank order relation of distances to the center of mass
The pair of points with the smallest distance between them
There’s going to be such a valid choice of ε almost surely, so this solution works.