С# Сгруппировать рядом стоящие координаты. Array/List
Задавал уже такой вопрос. но немного не правильно сформулировал его. Имеются координаты в массиве (X и Y):
359x127
513x127
512x127
360x127
513x126
359x126
360x126
512x126
359x128
Координаты хранятся тут:
List<(int, int)> coords = new List<(int, int)>();
Нужно удалить похожие дубликаты и оставить уникальные. Похожие - это те которые различаются на +-1, например вот эти:
513x127
512x127
513x126
Подскажите как эти координаты объединить или сгруппировать в одну по наибольшему значению X и Y из всего списка?
UPD Пока получился вот такой костыль:
List<(int, int)> coords = new List<(int, int)>() {
(553,126),
(554,126),
(554,127),
(553,126),
(41,126),
(40,126),
(45,120),
(44,120),
(46,120),
(553,127),
(1001,44),
(1002,45)
};
List<(int, int)> newcoords = new List<(int, int)>();
coords = coords.GroupBy(x => x.Item1).Select(x => x.First()).ToList();
for (var j = 0; j < coords.Count(); j++)
{
//Console.WriteLine(coords[j].Item1 + "x" + coords[j].Item2);
for (var i = 0; i < coords.Count(); i++)
{
// Console.WriteLine(coords[j].Item1+ "==" +coords[i].Item1);
if (Math.Abs(coords[j].Item1 - coords[i].Item1)==1) {
coords.RemoveAt(i);
}
}
newcoords.Add(coords[j]);
}