by Anonymous » 14 Jul 2025, 15:34
Ich arbeite gerade an einem Algorithmus, der eine Liste von Ganzzahlen aufteilt, aber ich kann nicht herausfinden, wie es geht. Ich habe eine Liste von Ganzzahlen, die ich in 3 Listen
teilen muss, und die Summe aller dieser Listen sollte so ähnlich wie möglich sein. Ich habe mit dieser Liste ein Demo-Projekt gestartet: < /p>
Code: Select all
List numbers = new List { 1, 2, 3, 4, 5 };
< /code>
In diesem Fall sollte das Ergebnis: < /p>
seinlist1 = {1,4};
list2 = {3,2};
list3 = {5};
< /code>
Und hier ist mein Code: < /p>
public static List ProvideLists(List originalList)
{
List result
= new List { new List(), new List(), new List() };
var listToParse = originalList;
while (listToParse.Count > 0)
{
var smalestList =
result.Aggregate((a, b) => a.Sum() < b.Sum() ? a : b);
var biggestList =
result.Aggregate((a, b) => a.Sum() > b.Sum() ? a : b);
var diffSmallBig = biggestList.Sum() - smalestList.Sum();
var closestNumber =
listToParse.OrderBy(x => Math.Abs(x - diffSmallBig)).First();
listToParse.Remove(closestNumber);
smalestList.Add(closestNumber);
}
return result;
}
< /code>
Derzeit retektiert dieser Code: < /p>
list1 = {3};
list2 = {5,2};
list3 = {4,1};
Wenn jemand einen Hinweis hat, um mir zu helfen

Ich arbeite gerade an einem Algorithmus, der eine Liste von Ganzzahlen aufteilt, aber ich kann nicht herausfinden, wie es geht. Ich habe eine Liste von Ganzzahlen, die ich in 3 Listen [url=viewtopic.php?t=13628]teilen[/url] muss, und die Summe aller dieser Listen sollte so ähnlich wie möglich sein. Ich habe mit dieser Liste ein Demo-Projekt gestartet: < /p>
[code]List numbers = new List { 1, 2, 3, 4, 5 };
< /code>
In diesem Fall sollte das Ergebnis: < /p>
seinlist1 = {1,4};
list2 = {3,2};
list3 = {5};
< /code>
Und hier ist mein Code: < /p>
public static List ProvideLists(List originalList)
{
List result
= new List { new List(), new List(), new List() };
var listToParse = originalList;
while (listToParse.Count > 0)
{
var smalestList =
result.Aggregate((a, b) => a.Sum() < b.Sum() ? a : b);
var biggestList =
result.Aggregate((a, b) => a.Sum() > b.Sum() ? a : b);
var diffSmallBig = biggestList.Sum() - smalestList.Sum();
var closestNumber =
listToParse.OrderBy(x => Math.Abs(x - diffSmallBig)).First();
listToParse.Remove(closestNumber);
smalestList.Add(closestNumber);
}
return result;
}
< /code>
Derzeit retektiert dieser Code: < /p>
list1 = {3};
list2 = {5,2};
list3 = {4,1};
[/code]
Wenn jemand einen Hinweis hat, um mir zu helfen :)