.NET 4.x Перебор списка и выборка на основе метода - C#
Формулировка задачи:
Прошу подсказать советом, в какую сторону копать или гуглить по форуму
Имеется 1000 точек. Предположим:
В некоем цикле надо перебрать их все и на основании другого метода отсеять неподходящие.
Сортировка такая: берём первую точку, сравниваем со
public class Point
{
public Double X { get; set; }
public Double Y { get; set; }
public Double Z { get; set; }
public Point(Double _x, Double _y, Double _z)
{
X = _x;
Y = _y;
Z = _z;
}
}второй
, условие не выполнено. Берём первую точку, сравниваем стретьей
, условие выполнено => добавляем точки в результирующий массив и начинаем заново перебор с последней взятой, тоесть с третьей точкой: берем третью точку, сравниваем счетвертой
, условие выполнено => добавляем четвёртую точку. И снова выборка, начиная с последней добавленной в результирующий массив. Есть ли какие подходящие алгоритмы для такого?Решение задачи: «.NET 4.x Перебор списка и выборка на основе метода»
textual
Листинг программы
//Код не совсем корректен
public void Sort(List<Point> points)
{
List<Point> resultArray = new List<Point>();
Int32 i = 0;
Boolean firstTrue = false;
Boolean secondTrue = false;
while (i < 1000)
{
Point first = null;
if (!firstTrue)
{
first = points[i];
}
Point second = points[i + 1];
Point third = points[i + 2];
Point center = GetCircleCenter(first, second, third);
if (SomeSortingMethod(first, center, second))
{
resultArray.Add(first);
resultArray.Add(second);
firstTrue = true;
}
if (SomeSortingMethod(second, center, third))
{
resultArray.Add(second);
resultArray.Add(third);
secondTrue = true;
}
if (firstTrue)
{
i = i + 1;
}
if (secondTrue)
{
i = i + 1;
}
}
}