Ответы пользователя по тегу Алгоритмы
  • Как реализовать метод принадлежности точки многоугольнику?

    @kttotto
    пофиг на чем писать
    Это стандартная задача геодезии по вхождению точки в полигон, решается косым умножением векторов.
    По сути, перебираются все отрезки полигона и смотрится с какой стороны отрезка лежит точка. Считаешь количество всех случаев когда она лежит справа от отрезка (т.е. пересекает при повороте), отфильтровываешь все отрезки, которые лежат выше или ниже точки. Если кол-во справа четное или ноль, значит точка в полигон не входит, если нечетное, значит лежит внутри полигона.
    Кодом решается в пять строк.

    PS: нашел свой ответ двухгодичной давности)
    Ответ написан
    3 комментария
  • Как выбрать минимальное значение из количества одинаковых элементов массива?

    @kttotto
    пофиг на чем писать
    Я не по части питона, но вот, ловите
    a = [1, 2, 4, 4, 2, 2, 1, 4]
    length = len(a)
    
    i = 0
    max = a[i]
    
    while (i < length):
    	if(a[i] > max):
    		max = a[i]
    	i += 1
    
    counter = 0
    i = 0
    result = length
    
    while (i < length):
    	if(max == a[i]):
    		counter = counter + 1
    		if(i == (length - 1) or a[i+1] != max):
    			if(counter < result):
    				result = counter
    				counter = 0
    	i += 1
    
    print(result)
    input()
    Ответ написан
    Комментировать
  • Что такое и какая разница между паттернами и алгоритмами?

    @kttotto
    пофиг на чем писать
    В данном случае точнее говорить "паттерны проектирования", потому что просто патерн может быть чего угодно, это просто шаблон.
    Паттерн проектирования дает шаблон решения часто встречаемых однотипных задач, он может быть абстрактым и больше как рекомендация, он не дает точных указаний и порядок действий.

    Паттерн от алгоритма отличается так же, как проект дома от пошагового процесса его постройки.
    Ответ написан
    5 комментариев
  • Как найти все границы объектов, описанных попиксельно?

    @kttotto
    пофиг на чем писать
    Если это двумерный массив, где каждый пиксель имеет координаты, то почему бы не взять из каждой строки индексы первого черного и последнего черного.

    На C# это выглядело бы так
    var arr = new bool[100][];
    var contour = new List<List<int>>();
    
    for (var y = 0; y < 100; y++)
    {
    	var firstX = Array.IndexOf(arr[y], true);
    	var lastX = Array.LastIndexOf(arr[y], true);
    
    	if(firstX != -1)
    		 contour.Add(new List<int> { firstX, y });
    
    	if (lastX != -1)
    		 contour.Add(new List<int> { lastX, y });
     }
    Ответ написан
  • Как обеспечить автономность программы от сервера?

    @kttotto
    пофиг на чем писать
    Если хотят учесть такие случаи, обычно используют очереди, готовые или самописные. Прежде чем отдать на сервер, документ в очередь, есть конект - очередь двигается, нет - очередь растет. Не в курсе предметной области, но если важен порядок нумерации, то может стоит нумерацию перенести на сервер? Сервер получил и сам пронумеровал исходя из каких то метаданных, которые придут с документом.
    Ответ написан
    Комментировать