• Как найти медиану одномерного массива?

    15432
    @15432
    Системный программист ^_^
    Если заранее известен набор значений элементов массива (0..255), а количество элементов сильно больше набора значений (несколько тысяч), можно использовать гистограмму — считать количество элементов каждого значения (5 нулей, 340 единиц, 210 двоек… ) В гистограмме середину найти значительно проще (будет известно общее количество, достаточно суммировать количества в ячейках до превышения половины от общего числа. Элемент, на котором будет достигнута середина и будет медианой)
    Данный подход очень сильно ускоряет медианную фильтрацию изображений с большим радиусом (обновление гистограммы можно нехило оптимизировать, обновляя лишь «края» при переходе к соседнему пикселю)
    Ответ написан
    Комментировать
  • Разложить количество чеков по дням, алгоритм?

    @kantenbors
    Задача типовая.
    Имеется типовое решение - расчет накопительным итогом:
    Round(10/62*800)-Round(0/62*800)=129
    Round((10+10)/62*800)-Round(10/62*800)=129
    Round((10+10+10)/62*800)-Round((10+10)/62*800)=129
    Round((10+10+10+12)/62*800)-Round((10+10+10)/62*800)=155
    Round((10+10+10+12+12)/62*800)-Round((10+10+10+12)/62*800)=155
    Round((10+10+10+12+12+4)/62*800)-Round((10+10+10+12+12)/62*800)=51
    Round((10+10+10+12+12+4+4)/62*800)-Round((10+10+10+12+12+4)/62*800)=52
    Ответ написан
    Комментировать
  • Разложить количество чеков по дням, алгоритм?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    без формализации одним потоком сознания сложно

    но 56 чеков, которые остаются после дележки 800 на 62 часа можете делить вполне по весам дней с округлением в нижнюю сторону - чтобы выходные не всегда получали добавленные
    Ответ написан
    Комментировать
  • Разложить количество чеков по дням, алгоритм?

    @magarif
    Программист
    Мне кажется как-то так:

    1) Считаете количество часов в неделе
    10 + 10 + 10 + 12 + 12 + 4 + 4 = 62
    2) Делите с остатком ( в php смотреть знак %) количество чеков на количество часов
    800 / 62 = 12 и остаток 56
    3) Считаете отношение часов в днях от общей суммы
    10 / 62 = 0,1613
    12 / 62 = 0,1935
    4 / 62 = 0,0645
    4) По отношениям раскидываете остаток по дням
    56 * 0,1613 = 9,03 (пн, вт, ср)
    56 * 0,1935 = 10,84 (чт, пт)
    56 * 0,0645 = 3,61 (сб, вс)
    5) Откидываем целые по дням и исключаем эти дни
    6) остатки складываем и повторяем пункт 4
    Ответ написан
    Комментировать
  • Правильная обработка исключений от внешнего апи symfony?

    Decadal
    @Decadal
    вы можете создать классы ошибок. И бросать исключения в тех или иных случаях, разделяя их по категориям "случившегося", а в контроллере можете навешивать обработчики на тот или иной тип исключений.

    Вот пример из моего кода:

    try {
        $results = $core->execute($coreConfig);
    }
    catch (BreakpointException $e) {
        throw $e;
    }
    catch (StrategiesException $e) {
        $this->mark("Expected error:".$e->getMessage());
        return $this->formattingResult(ProcessRecord::STATUS_ERROR,$e->getMessage());
    }
    catch (\Exception $e) {
        $this->mark("Unexpected error:".$e->getMessage()."[".$e->getFile()."] : ".$e->getLine());
        return $this->formattingResult(ProcessRecord::STATUS_UNEXPECTED_ERROR,$e->getMessage());
    }


    правда у меня это лежит в сервисе, но в принципе, зависит от логики работы.
    Ответ написан
    3 комментария
  • Как получить mime type изображения из base64 изображения?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Подставьте mime от любого поддерживаемого формата изображения. Браузер все равно корректно покажет картинку.
    Ответ написан
    1 комментарий