public static void Main()
private static void assertEqual(int[] left, int[] right)
Console.WriteLine(left.SequenceEqual(right) ? '✅' : '❌');
private static int[] getPaginationArray(int maxAllowedPage, int currentPage, int totalPage)
if (currentPage == totalPage && maxAllowedPage % 2 == 0)
if (maxAllowedPage + currentPage < totalPage)
int[] paginationArray = new int[maxAllowedPage];
paginationArray[0] = currentPage;
var mid = Math.Floor((double)currentPage / 2);
if (mid >= maxAllowedPage || (mid != 1 && mid % 2 != 0))
paginationArray[(int)mid] = currentPage;
for (int i = (int)mid - 1; i >= 0; i--)
paginationArray[i] = val;
for (int i = (int)mid + 1; i < maxAllowedPage; i++)
paginationArray[i] = val;
private static void runTests()
assertEqual(getPaginationArray(5, 1, 5), new int[5] { 1, 2, 3, 4, 5 });
assertEqual(getPaginationArray(5, 7, 9), new int[5] { 5, 6, 7, 8, 9 });
assertEqual(getPaginationArray(5, 4, 9), new int[5] { 2, 3, 4, 5, 6 });
assertEqual(getPaginationArray(2, 3, 999), new int[3] { 2, 3, 4 });
assertEqual(getPaginationArray(1, 7, 7), new int[1] { 7 });
assertEqual(getPaginationArray(2, 7, 7), new int[3] { 5, 6, 7 });