.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;
                }
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы