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

    akaish
    @akaish
    Стек Java\Android
    Ммм, далек от царицы всех наук, три идеи, последующая лучше предыдущей.

    Проверьте фигуру на выпуклость, если она таковой не является - достройте её до выпуклой. Посчитайте сечение новой фигуры и вычтите из получившегося сечения то, что достроили. Подводный камень - то, что вы достроили может оказаться не выпуклой фигурой.

    Вариант два, проверьте фигур на выпуклость, если она таковой не является, разбейте фигуру на отдельные выпуклые фигуры.

    Вариант три, забить на проверки и разбить каждое сечение на гарантированно выпуклый многоугольник (треугольник). Ну или саму фигуру на треугольные пирамиды. И уже считать сумму сечений этих треугольников\треугольных пирамид.

    Но это мысли вслух. Думаю, существует более красивое решение, основанное на какой-нибудь теореме. По сабжу я только помню, что фигура выпуклая, если отрезок, соединяющий любые две точки этой фигуры, лежит внутри этой фигуры.
    Может, если хранить фигуру, как набор векторов, задачу можно будет решить проще через методы векторной алгебры. Но не могу сказать точнее, так как был балбесом и на парах во время учебы в универе занимался чем угодно, кроме самой учебы.
    Ответ написан
    Комментировать
  • Как сравнить данные двух массивов текста?

    akaish
    @akaish
    Стек Java\Android
    Ммм, я в алгоритмике не очень (совсем не очень), но как по мне - сортируете второй массив и циклом выбирая из первого массива строки, приводите их к виду, ожидаемому во втором массиве (префикс пути и отбрасывание номерного обозначение) и бинарным поиском ищите вхождение этих строк. Второй массив сортируете, к примеру, quicksort'ом или сортировкой слиянием.
    UPD. А еще лучше приводить во втором и первом массивах строки к единому виду, я так думаю, это в случае, если директория обычно занимает больше символов, чем название файла, отсекая префикс по первому с конца вхождению path separator char. Будет меньше проверок на совпадение символов в двух строках.
    Ответ написан
    Комментировать