Brad Dean

Josephus' Circle

Here is my solution to the latest code contest from The Daily WTF Programming Praxis: Josephus’ Circle.

What I like about this solution is that it represents in code, how the problem is actually carried out in real life. The soldiers are counted off one by one.

Also, I just LOVE .Net generics!

static int Josephus(int numSoldiers, int soldiersToSkip)
{

     // create soldiers
     List<int> Soldiers = new List<int>();
     for (int i = 0; i < numSoldiers; i++)
     {
          Soldiers.Add(i);
     }

     // kill soldiers
     int iSoldier = 0;
     while (Soldiers.Count() > 1)
     {

          // skip ahead by the requested number of soldiers
          iSoldier = iSoldier + soldiersToSkip;

          // if we've gone over, then wrap back around to the top
          while (iSoldier > Soldiers.Count())
          {
               iSoldier -= Soldiers.Count();
          }

          // kill the choosen soldier
          Soldiers.RemoveAt(iSoldier - 1);
     }

     // return answer
     return Soldiers[0] - 1;

}