2^N (that's two raised to the power of N, where N can be arbitrarily large) soldiers are arranged shoulder to shoulder facing outwards in a circle. Each soldier has limited memory - s/he can only remember O(1) bits of information, and can give or receive information only to the soldier to his or her left and the soldier to his or her right. Time proceeds in discrete rounds: time 0, time 1, time 2, .... In each round, each soldier can communicate only O(1) bits of information with the two soldiers to the right and left. No soldier knows how many soldiers there are.
At time 0, a general taps one of the soldiers on the shoulder and says "go". After that, soldiers communicate (as the time steps pass) according to some agreed upon protocol. At some later time, all soldiers simultaneously raise their guns and fire. (No soldier fires before this time.)
The challenge problem is to determine a protocol that the soldiers can use to accomplish this, subject to the constraints outlined in the first paragraph.
An example that doesn't quite work would be:
(1) the first soldier (the one that the general taps at time 0), at time 1 taps the soldier to his or her right. At time 2, that soldier in turn taps the soldier to his or her right, and so on. In this phase, each soldier follows the protocol "when I am tapped on my left shoulder, I will, next round, tap the soldier to my right on his or her left shoulder."
(2) while this is happening, the first soldier counts the time steps as they pass. when, eventually, he is tapped on his left shoulder by the soldier to his left, he knows that the number of soldiers is equal to the number of time steps passed. let this number be 2^N. In the next round, he turns to the soldier to his or her right and says "fire after 2^N-1 time steps." That soldier waits a round and then says to the soldier to his or her right "fire after 2^N-2 time steps. In general, each soldier, once s/he is told "fire after X time steps", waits a time step and turns to his or her right and tells the next soldier "fire after X-1 time steps". each soldier, after being told "fire after X time steps" also does the following: s/he counts down X time steps, then fires.
That's an example protocol, but it doesn't fit the criteria outlined for two reasons. First, it requires each solder to communicate more than O(1) bits of information in a round. (To communicate a number as large as 2^N requires N bits, and N can be arbitrarily large.) Second, it requires each soldier (when counting down) to remember up to N bits of information.
The protocol you design must require each soldier to remember, and to communicate, only O(1) bits of information at any given time.