public static void Main()
var source = new int[] { 0, 1, 2, 2, 5, 4, 4, 5, 1, 8, 4, 9, 1, 3, 4, 5, 7 };
var result = FilterArray(source);
var expectedArray = new int[] { 0, 1, 2, 5, 4, 8, 9, 3, 7 };
if (result.SequenceEqual(expectedArray))
Console.WriteLine("Task completed.");
Console.WriteLine("Result array is not correct.");
public static int[] FilterArray(int[] source)
var result = new int[10];
int num = Filter(source.Reverse().ToArray(), result, 0);
Array.Resize(ref result, 10 - num);
return result.Reverse().ToArray();
private static int Filter(int[] source, int[] array, int num)
if (Array.LastIndexOf(source, source[0]) == 0)
array[num++] = source[0];
var temp = new int[source.Length - 1];
Array.Copy(source, 1, temp, 0, source.Length - 1);
Filter(temp, array, num);