// ------------------------------------------------------------
// A small program demonstrating how to remove every Nth element
// from a List<T> using clear, expressive C# patterns.
// ------------------------------------------------------------
using System;
using System.Collections.Generic;
class Program
{
/*
This function returns a new list with every Nth element removed.
It performs a single pass over the input list. Because List<T>
uses zero‑based indexing, we check (index + 1) % n != 0 to keep
elements that are *not* in the Nth position.
The variable "size" captures the list length before the loop,
which avoids repeatedly accessing items.Count inside the loop.
*/
static List<T> RemoveEveryNth<T>(List<T> items, int n)
{
if (n <= 0)
throw new ArgumentException("n must be a positive integer");
int size = items.Count; // capture size once
var result = new List<T>(size); // reserve capacity
for (int i = 0; i < size; i++) {
if ((i + 1) % n != 0) {
result.Add(items[i]);
}
}
return result;
}
/*
Keeping Main small and focused makes the program easy to extend.
Here we demonstrate the function with a simple example.
*/
static void Main()
{
var data = new List<int>();
for (int i = 1; i <= 20; i++) {
data.Add(i); // Example list: numbers 1–20
}
int n = 3; // Remove every 3rd element
var cleaned = RemoveEveryNth(data, n);
Console.WriteLine("Original: " + string.Join(" ", data));
Console.WriteLine("After removing every " + n + "-th element: " +
string.Join(" ", cleaned));
}
}
/*
run:
Original: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
After removing every 3-th element: 1 2 4 5 7 8 10 11 13 14 16 17 19 20
*/