static string Rule4(CircularList <string> elves, int rightMoves) { //Alltid fjern den siste stolen i listen. while (elves.Count > 1) { elves.MoveRight(rightMoves); elves.DeleteLast(); } return(elves.Head.data); }
static string Rule2(CircularList <string> elves, int rightMoves) { //Begynn med å fjerne stolen på plass 0, deretter på plass 1, og oppover, //frem til man når antall stoler(som fortsatt er i spill), deretter begynner man på første stol igjen. int toRemove = 0; while (elves.Count > 1) { elves.MoveRight(rightMoves); elves.DeleteAt(toRemove); toRemove = (++toRemove % elves.Count); } return(elves.Head.data); }
static string Rule3(CircularList <string> elves, int rightMoves) { //Fjern den midterste stolen. Dersom antall stoler er partall, fjernes de to stolene //som er i midten, frem til det er 2 stoler igjen, da fjernes den første stolen. while (elves.Count > 2) { elves.MoveRight(rightMoves); var toRemove = elves.Count / 2; elves.DeleteAt(toRemove); if ((elves.Count % 2) == 1) { elves.DeleteAt(toRemove); } } elves.MoveRight(rightMoves); return(elves.Head.next.data); }