Hallo liebe Community,
ich weiß nicht, ob meine Themenbezeichnung treffen ist, jedoch kommt sie meiner Beschreibung des möglichen Szenarios am nächsten.
Es geht um folgendes:
Für ein Spiel das ich aus Hobbyzwecken programmiere, benötige ich eine Funktion, die mir anhand einer beliebigen Anzahl Wörter folgendes Muster ausgibt:
Bsp:
meineFunktion(['Apfel', 'Birne']);
Ausgabe:
Apfel - 0 Birne - 0
Apfel - 0 Birne - 1
Apfel - 0 Birne - 2
Apfel - 1 Birne - 1
Apfel - 1 Birne - 2
Apfel - 2 Birne - 2
Bei 3 Wörtern wäre die Ausgabe wie folgt:
meineFunktion(['Apfel','Birne','Tomate']);
Apfel - 0 Birne - 0 Tomate - 0
Apfel - 0 Birne - 0 Tomate - 1
Apfel - 0 Birne - 0 Tomate - 2
Apfel - 0 Birne - 1 Tomate - 1
Apfel - 0 Birne - 1 Tomate - 2
Apfel - 0 Birne - 2 Tomate - 2
Apfel - 1 Birne - 1 Tomate - 1
Apfel - 1 Birne - 1 Tomate - 2
Apfel - 1 Birne - 2 Tomate - 2
Apfel - 2 Birne - 2 Tomate - 2
Leider stehe ich total auf dem Schlauch und sehe den Wald vor lauter Bäumen nicht mehr... Danke für eure Hilfe!
Liebe Grüße,
reloop
Ist jetzt nicht schön, sollte aber funktionieren.
Das Zauberwort dabei ist Rekursion.
static List<string> ausgabestring(string prefix, int startindex, List<string> obst)
{
List<string> weniger_obst=new List<string>(obst);
List<string> output=new List<string>();
if (obst.Count > 0)
{
weniger_obst.RemoveAt(0);
for (int i = startindex; i <= 2; i++)
{
output.AddRange(ausgabestring(prefix + " " + obst[0] + " " + i, i, weniger_obst));
}
}
else
output.Add(prefix);
return output;
}
Gruß Gwinn
Um den Baum sichtbarer zu machen: einfach eine rekursive Methode mit einer einzigen For-Schleife und dem prefix als Übergabe.
Den fertigen Code werd ich Dir da aber nicht machen, sorry 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code