Я не хотел про него писать, потому что статья и так достаточно большая вышла. Если вкратце, то есть 2 способа двунаправленого растягивания:
1. Растянуть до нужного размера обычным растягиванием, сохранив пропорции, а потом применить этот способ.
2. Растягивать точно также, как и в случае одного направления, только одновременно искать как вертикальные, так и горизонтальные цепочки, и выбирать среди них постоянно минимум. Единственное замечание — если картинка не квадратная, то надо будет эти значения как-то нормализировать, например помножив суммы по горизонталных цепочках на высоту, а по вертикальных — на ширину.
Если владеете английским, то можете про это почитать тут: PDF от авторов
Дело в том, что там делится не всегда на 2, а на количество посчитаных соседей. Для большинства пикселей мы считаем по два соседа, но для крайних может быть и меньше.
Этот алгоритм практически так и делает, даже чуть больше. Он сам «ищет» участки, которые можно растянуть. Кроме того он может растягивать не только строго вертикальные участки. Например картинку со звездным небом таким способом, как описали вы, уже не растянуть.
А насчет сложности — может оно не так и сложно, просто я постарался детально описать, чтобы меньше вопросов оставалость после прочтения.
Этот метод ищет 5 последних цифр 10^18 числа Фибоначи быстрее, чем любой из тестированных вариантов для 100000.
В топике идет сравнение рекурсии и циклов, а не самых алгоритмов.
1. Растянуть до нужного размера обычным растягиванием, сохранив пропорции, а потом применить этот способ.
2. Растягивать точно также, как и в случае одного направления, только одновременно искать как вертикальные, так и горизонтальные цепочки, и выбирать среди них постоянно минимум. Единственное замечание — если картинка не квадратная, то надо будет эти значения как-то нормализировать, например помножив суммы по горизонталных цепочках на высоту, а по вертикальных — на ширину.
Если владеете английским, то можете про это почитать тут: PDF от авторов
А насчет сложности — может оно не так и сложно, просто я постарался детально описать, чтобы меньше вопросов оставалость после прочтения.
Также нормально распознает более сложные коды например:
Этот метод ищет 5 последних цифр 10^18 числа Фибоначи быстрее, чем любой из тестированных вариантов для 100000.
В топике идет сравнение рекурсии и циклов, а не самых алгоритмов.
Напрямую или через промежуточную папку?
А java файл тот же, о котором уже писал в коментах c отправкой смс на 1171.