Код: Выделить всё
List numbers = new List { 1, 2, 3, 4, 5 };
< /code>
В этом случае результат должен быть: < /p>
list1 = {1,4};
list2 = {3,2};
list3 = {5};
< /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>
В настоящее время этот код возвращает: < /p>
list1 = {3};
list2 = {5,2};
list3 = {4,1};
Подробнее здесь: https://stackoverflow.com/questions/751 ... imilar-sum