Denkanstoß für die Berechnung von variabler Anzahl an Kombinationen

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Mika2828.

    Denkanstoß für die Berechnung von variabler Anzahl an Kombinationen

    Guten Tag,

    ich stehe derzeit vor folgenden Problem und weiß leider nicht so recht weiter.
    Ich hoffe ihr könnt mir helfen.

    Problematik:
    Ich lese Semikolon getrennte werte aus einer TxT Datei.

    Beispiel:
    1-5;5-10;1-3;

    Zeilen welche werte mit '-' enthalten müssen dupliziert werden.
    Aus:
    1-5;5-10;1-3;

    Wird:
    1;5;1
    1;6;1
    1;7;1
    1;8;1
    1;9;1
    1;10;1
    2;5;1
    2;6;1
    ...
    ...
    für alle Kombinationen.
    Die Anzahl der Werte in einer Zeile ist allerdings komplett Variabel.(Das macht es für mich so schwierig)

    Der Ansatz sieht folgendermaßen aus.

    C#-Quellcode

    1. string[] rootValues = rootRow.Split(';');
    2. int[] colMinValues = new int[anzahlSpalten];
    3. int[] colMaxValues = new int[anzahlSpalten];
    4. int[] colCurValues = new int[anzahlSpalten];
    5. //Werte festlegen
    6. for(int i=0; i < anzahlSpalten; i++)
    7. {
    8. string rootValue = rootValues[i];
    9. if(rootValue.Contains("-"))
    10. {
    11. string[] splitRootValue = rootValue.Split('-');
    12. colMinValues[i] = int.Parse(splitRootValue[0]);
    13. colMaxValues[i] = int.Parse(splitRootValue[1]);
    14. colCurValues[i] = colMinValues[i];
    15. }
    16. }

    Um die Kombinationen variabel zu ermitteln habe ich noch keinen Ansatz.

    Danke für eure Hilfe.

    MfG Michael
    @Mika2828 Fang an und poste für 3 kleine Zahlen je eine vollständige Liste, damit wir hier nicht aneinander vorbeireden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Sorry, ich hatte den Beitrag nicht mehr gesehen.
    Also für die Nachwelt:

    Bei Fragen einfach melden.

    C#-Quellcode

    1. private void GetKombinations(List<AsciiValue> values, int index, List<string> newDupValues )
    2. {
    3. int i = index;
    4. if (i < values.Count())
    5. {
    6. foreach(object j in values[i].Values)
    7. {
    8. values[i].Value = j;
    9. GetKombinations(values, index + 1, newDupValues);
    10. if (i == values.Count()-1)
    11. {
    12. Console.WriteLine(string.Join(";", values));
    13. newDupValues.Add(string.Join(";", values));
    14. }
    15. }
    16. }
    17. }


    MfG Mika