class Program
{
static void Main( string[] args)
{
List< int> array = new List< int>( 600);
for ( int i = 1; i <= 600; i++)
{
array.Add(i);
}
var circleList = new CircleArrayList< int>(array);
int num = 0;
while ( true)
{
if (circleList.Lengh == 1)
{
break;
}
num += 1;
if (num == 3)
{
circleList.Remove();
num = 0;
}
else
{
circleList.MoveNext();
}
}
Console.WriteLine(circleList.Current);
Console.ReadLine();
}
}
public class CircleArrayList<T> : IEnumerator<T>
{
private List<T> interal;
private int index = 0;
public CircleArrayList(List<T> list)
{
this.interal = list;
}
public T Current
{
get { return interal[index]; }
}
public void Dispose()
{
return;
}
object System.Collections.IEnumerator.Current
{
get { return interal[index]; }
}
public bool MoveNext()
{
index += 1;
if (index == interal.Count)
index = 0;
return true;
}
public void Reset()
{
index = 0;
}
public void Remove()
{
interal.RemoveAt(index);
if (index == interal.Count)
index = 0;
}
public int Lengh
{
get
{
return interal.Count;
}
}
}
{
static void Main( string[] args)
{
List< int> array = new List< int>( 600);
for ( int i = 1; i <= 600; i++)
{
array.Add(i);
}
var circleList = new CircleArrayList< int>(array);
int num = 0;
while ( true)
{
if (circleList.Lengh == 1)
{
break;
}
num += 1;
if (num == 3)
{
circleList.Remove();
num = 0;
}
else
{
circleList.MoveNext();
}
}
Console.WriteLine(circleList.Current);
Console.ReadLine();
}
}
public class CircleArrayList<T> : IEnumerator<T>
{
private List<T> interal;
private int index = 0;
public CircleArrayList(List<T> list)
{
this.interal = list;
}
public T Current
{
get { return interal[index]; }
}
public void Dispose()
{
return;
}
object System.Collections.IEnumerator.Current
{
get { return interal[index]; }
}
public bool MoveNext()
{
index += 1;
if (index == interal.Count)
index = 0;
return true;
}
public void Reset()
{
index = 0;
}
public void Remove()
{
interal.RemoveAt(index);
if (index == interal.Count)
index = 0;
}
public int Lengh
{
get
{
return interal.Count;
}
}
}