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

  • C#
  • .NET 4.5

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― Eine häufig von mir verwendete Abkürzung: CEs = control elements (Labels, Buttons, DGVs, ...)
    ― If Not GrammarIsOk() Then AssumeThatCodeIsOk = False
    ― »Oh, großes Spaghetticodemonster. Bitte schicke mir Durchblick! Oder zumindest eine Gabel. Oder – wenn es kein Besteck mehr gibt – zumindest Glasnudeln.«
    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