Вычисление N-го шага перестановки?

У меня есть char [26] букв a-z и через вложенные операторы я создаю список последовательностей, таких как:

aaa, aaz... aba, abb, abz, ... zzy, zzz.

В настоящее время программное обеспечение написано для генерации списка всех возможных значений из aaa-zzz, а затем поддерживает индекс и просматривает каждое из них, выполняя операции над ними.

Список, очевидно, большой, он не до смешного большой, но дошел до того, что объем памяти слишком велик (есть и другие области, на которые я смотрю, но это одна из тех, что у меня есть).

Я пытаюсь создать формулу, в которой я могу сохранить индекс, но покончить со списком последовательностей и вычислить текущую последовательность на основе текущего индекса (так как время между операциями между последовательностями велико).

Например:

char[] characters = {a, b, c... z};
int currentIndex = 29; // abd

public string CurrentSequence(int currentIndex)
{
    int ndx1 = getIndex1(currentIndex); // = 0
    int ndx2 = getIndex2(currentIndex); // = 1
    int ndx3 = getIndex3(currentIndex); // = 3

    return string.Format(
        "{0}{1}{2}", 
        characters[ndx1], 
        characters[ndx2], 
        characters[ndx3]); // abd
}

Я попытался разработать небольшой пример, используя подмножество (abc) и пытаясь внести в него индекс, используя деление по модулю, но у меня сегодня проблемы с мышлением, и я в замешательстве.

Я не прошу ответа, просто никакой помощи. Может быть, удар в правильном направлении?

Ответы на вопрос(4)

Ваш ответ на вопрос