Вычисление 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) и пытаясь внести в него индекс, используя деление по модулю, но у меня сегодня проблемы с мышлением, и я в замешательстве.
Я не прошу ответа, просто никакой помощи. Может быть, удар в правильном направлении?