public static void Main()
Console.WriteLine(IsEqual(Transform(new int[] {1, 2, 3, 4, 5}, 0), new int[]{1, 2, 3, 4, 5}));
Console.WriteLine(IsEqual(Transform(new int[] {1, 2, 3, 4, 5}, 2), new int[]{3, 4, 5, 1, 2}));
Console.WriteLine(IsEqual(Transform(new int[] {1, 2, 3, 4, 5}, 3), new int[]{4, 5, 1, 2, 3}));
Console.WriteLine(IsEqual(Transform(new int[] {1, 2, 3, 4, 5}, 6), new int[]{2, 3, 4, 5, 1}));
Console.WriteLine(IsEqual(Transform(new int[] {1, 2, 3, 4, 5}, 11), new int[]{2, 3, 4, 5, 1}));
Console.WriteLine(IsEqual(Transform(new int[] {1, 2, 3, 4, 5}, -1), new int[]{5, 1, 2, 3, 4}));
Console.WriteLine(IsEqual(Transform(new int[] {1, 2, 3, 4, 5}, -11), new int[]{5, 1, 2, 3, 4}));
Console.WriteLine(IsEqual(Transform(new int[] {1, 2, 3, 4, 5}, 4), new int[]{5, 1, 2, 3, 4}));
Console.WriteLine("-----------------------------------------------------");
public static int[] Transform(int[] list, int offset)
if (offset == 0) return list;
int length = list.Length;
int distance = Math.Abs(offset % length);
int[] transformedArray = new int[length];
int subArraysBorderIndex = 0;
subArraysBorderIndex = (offset > 0) ? distance : length - distance;
for (int i = subArraysBorderIndex; i < length + subArraysBorderIndex; i++)
transformedArray[iterator] = list[index];
public static bool IsEqual(int[] a, int[] b)
if (a == null || b == null)
if (a.Length != b.Length)
for (var i = 0; i < a.Length; i++)
if (a[i] != b[i]) return false;