У меня есть фигуры разного цвета.
Shape pink = new Shape() { name = "Pink" };
Shape yellow = new Shape() { name = "Yellow" };
Shape red = new Shape() { name = "Red" };
Shape white = new Shape() { name = "White" };
Shape blue = new Shape() { name = "Blue" };
Каждая фигура возвращает список любых других фигур, к которым она прикасается, который хранится в списке.
List<List<Shape>> lists;
Таким образом, списки могут выглядеть следующим образом
lists = new List<List<Shape>>()
{
new List<Shape>() { pink, yellow },
new List<Shape>() { yellow, pink, red },
new List<Shape>() { red, yellow},
new List<Shape>() { white, blue},
new List<Shape>() { blue, white}
};
, который я хотел бы сжать и добавить в список новых списков трогательных фигур.
List<List<Shape>> result
В этом примере результат содержит только два
List<Shape>
например
{{pink, yellow, red}, { white, blue}}
Где дочерние списки имеют общий знаменатель.
Мне не удалось заставить это работать с циклами, и я не настолько знаком с Linq.
Другой сценарий будет
lists = new List<List<Shape>>()
{
new List<Shape>() { pink, yellow },
new List<Shape>() { yellow, pink, red },
new List<Shape>() { red, yellow, blue},
new List<Shape>() { white, blue,},
new List<Shape>() { blue, white, red}
};
И список результатов должен содержать только один список
{{pink, yellow, red, blue, white}}
потому что все предыдущие списки имеют некоторые относительные цвета.