## Project Euler Problem #24

`00:00:00.0716283`

This one hurt my head, even after I was led onto Narayana Pandita’s algorithm. The algorithm depends on finding the largest integer that is smaller than another integer in the sequence/array; however, I’ve looked at several code solutions that just come in from the right and pick the first integer that is smaller than another. So here I am!

Time to start studying for my repeat XNA exam.

Edit: My solution to this was basically stolen elsewhere, and it took me a whole year to come back, sit down, and work through my own solution. The poor wording (I’ve since edited it) of the Wikipedia article didn’t help me.

```using System;

public class TwentyFour {
static void Main() {
int[] a = {0,1,2,3,4,5,6,7,8,9};
int   b = 1;
int   c = 1000000;

while (b < c) {
a = Permute(a);
b++;
}

Print(a);
}

static void Print(int[] z) {
Console.WriteLine();
for (int i = 0; i < z.Length; i++)
Console.Write(z[i]);
Console.WriteLine("\n");
}

static int[] Permute(int[] z) {
int k = -1;
int l =  0;

for (int i = (z.Length - 2); i >= 0; i--)
if (z[i] < z[i + 1]) {
k = i;
break;
}

for (int i = z.Length - 1; i > k; i--)
if (z[i] > z[k]) {
l = i;
break;
}

int tmp = z[k];
z[k] = z[l];
z[l] = tmp;

Array.Reverse(z, k + 1, z.Length - (k + 1));
return z;
}
}```