Ich habe ein char[26] der Buchstaben a-z und über verschachtelte for-Anweisungen, die ich eine Liste von Sequenzen wie produzieren:
aaa, aaz... aba, abb, abz, ... zzy, zzz.
Gegenwärtig wird die Software so geschrieben, dass sie eine Liste aller möglichen Werte von aaa-zzz erstellt, dann einen Index verwaltet und jeden dieser Werte durchläuft, indem sie eine Operation an ihnen durchführt.
Die Liste ist offensichtlich groß, nicht lächerlich groß, aber sie ist an einem Punkt angelangt, an dem der Speicherbedarf zu groß ist (es gibt auch andere Bereiche, die untersucht werden, aber das ist einer, den ich habe).
Ich versuche, eine Formel zu erstellen, bei der ich den Index beibehalten, aber die Liste der Sequenzen abschaffen und die aktuelle Sequenz auf der Grundlage des aktuellen Index berechnen kann (da die Zeit zwischen den Operationen zwischen den Sequenzen lang ist).
Beispiel:
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
}
Ich habe versucht, ein kleines Beispiel mit einer Teilmenge (abc) auszuarbeiten und zu versuchen, mit Hilfe der Modulo-Division einen Index zu erstellen, aber ich habe heute Schwierigkeiten beim Denken und bin ratlos.
Ich erwarte keine Antwort, nur irgendeine Art von Hilfe. Vielleicht einen Tritt in die richtige Richtung?