Задать вопрос
  • Как отсортировать символы строки в порядке "AaBbCc..." в python?

    longclaps
    @longclaps
    Да пофиг, сколько раз встречается:
    order = {c: i for i, c in enumerate(
        "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz")}
    
    s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit"
    
    print(''.join(sorted(s, key=lambda c: order.get(c, 99))))
    Ответ написан
    1 комментарий
  • Python или Java для серверной части + работа с OpenCV?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    почитай этого пацанчика, лучше все равно разжевать некому

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

    TrueBers
    @TrueBers
    Гуглю за еду
    У вас в корне неверное понимание наследования и каша в голове.

    Наследование — это выражение отношения является. Т. е., по-вашему, книга является множеством авторов. Абсурд ведь, разве нет?
    Книга — это книга, она может являться бумагой, или абстрактным объектом, или содержимым библиотеки, но никак не авторами. Она написана авторами, авторы — это её аттрибут. Поэтому здесь лучше использовать агрегирование, а не наследование. Ибо книга содержит, в какой-то мере, творчество множества авторов.

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

    @Mercury13
    Программист на «си с крестами» и не только
    1018 — это обычное 64-битное целое. long long в Си, long в Java, int64 в Delphi.

    Очевидно, задача переводная, спичка не только match (это слово у них очень многозначное), но и matchstick. Причём переводил то ли автомат, то ли редкий надмозг, пример неговорящий, и откровенно непонятно: то ли где находится число 11, то ли что на 11-й позиции. Будем решать 2-ю задачу: что на 11-й позиции.

    1. Определить количество разрядов (для этого хватает несложного цикла) и какой номер у данного числа среди N-значных чисел.
    2. А теперь находим, сколько есть N-значных чисел из M спичек. Рекуррентное соотношение:

    Q[N, M] = sum{k = 1..9} (Q[N−1, M−q(k)]), если N — найденная нами значность, но не 1-ца,
    Для остальных N формула та же, но суммирование 0…9.
    q(0) = 6, q(1) = 2, q(2) = 5, и т.д. — кол-во спичек в цифре.
    Граничное условие: Q[0, 0] = 1, Q[0, M] = 0 для остальных M.
    «Методом выкручивания рук» также примем, что для отрицательных M все Q равняются 0.

    Решаем рекуррентное соотношение динамическим программированием.
    3. А теперь самое интересное: воспользовавшись таблицей динамического программирования, находить цифру за цифрой, начиная со старшей.

    Например, у нас 15-е число. Первый шаг опустим, поверьте мне: это 4-е двузначное, начиная с нуля.
    2-й шаг.
    Q[1,2] = 1
    Q[1,3] = 1
    Q[1,4] = 1
    Q[1,5] = 3
    Q[1,6] = 3
    Q[1,7] = 1
    Q[2,4] = 1
    Q[2,5] = 2
    Q[2,6] не вычислял, главное — запредельно большое.

    Q[2,0]…Q[2,3] равняются нулю.
    Вычитаем Q[2,4] — получается 3.
    Вычитаем Q[2,5] — получается 1.
    Вычитаем Q[2,6] — не получается. Итого у нас шесть спичек, остаётся 1.

    3-й шаг, работаем по цифре.
    Ноль, Q[1, 6−6] = 0. Остаётся 1.
    Единица, Q[1, 6−2] = 1. Остаётся 0.
    Двойка, Q[1, 6−5] = 0. Остаётся 0.
    Тройка, Q[1, 6−5] = 0. Остаётся 0.
    Четвёрка, Q[1, 6−4] = 1. Не вычитается, остаётся 2 спички, 1 знак и номер 0. Записываем цифру 4.
    Ноль, Q[0, 2−5] = 0. Остаётся 0.
    Единица, Q[0, 2−2] = 1. Не вычитается, остаётся 0 спичек, 0 знаков и номер 0. Записываем цифру 1.

    Итого получили 41.
    Ответ написан
    3 комментария
  • Как вывести сгенерированные случайные числа в четыре колонки?

    @javedimka
    Хочу сока
    >>> ints = [random.randint(-10,10) for x in range(1,101)]
    >>> while ints:
    ...     print('{0:>5}{1:>5}{2:>5}{3:>5}'.format(*ints[:4]))
    ...     ints = ints[4:]
    ... 
        5    5    6   -2
       -4    6    0    4
        9   -7    6    5
       -1    0    2   10
        7   -8    8    1
        7    4   -7    6
       -5   -6   -3    9
        2   -4    2    2
       -1    9   -7   -2
        5   10    4   10
       -9    8    5    7
        7    9   -5   -7
        9   10   10    9
        0   -8   -4   -3
       -5    5    6  -10
        1   -6   -4   -9
       -2    5   -4    2
       10   10    9   -6
       -1   -3   -3   -1
        2    6   -5   -7
       -5    1    7   -3
        3    9   -8   -7
       10    5   -5    6
        2    9   -1   -4
       -1   -2   -9   -2
    Ответ написан
    4 комментария
  • В чем суть миграций БД?

    sim3x
    @sim3x
    1. Что такое миграция, для чего конкретно нужна и как это связанно с сохранением данных?
    переход от одной структуры БД к другой без потери косистентности

    2. Чем миграция отличается от db_upgrade or db_downgrade?
    миграция подразумевает как прямое изменение апгрейд, так и обратное изменение - даунгрейд

    3. Что будет, если миграции не производить?
    миграции можно не делать,
    если данные не важны и их можно просто удалить из БД,
    если приложение не развивается и/или не меняет структуру хранения
    Ответ написан
  • Можете те ли подсказать пару идей для разработки и в будущем для диплома?

    Какую тему диплома на ... выбрать?
    Идешь к бизнесу -- говоришь, что хочешь работать бесплатно и делать все что ему нужно
    Если не нашел бизнеса -- идешь к преподу, он находит тебе задачу или бизнес у которого есть задачи
    Если нет -- идешь в гугл и берешь любую задачу

    https://www.reddit.com/r/AppIdeas/

    sim3x (c)
    Ответ написан
    Комментировать
  • Как организовать построчное чтение из файла с последующим удалением строки в Python?

    atomheart
    @atomheart
    Пишу на Python за карму и за деньги
    Используйте SQLite для этих целей. Создаете в нем табличку с одной колонкой и далее делаете с ней что хотите.
    Ответ написан
    Комментировать
  • Как низкоуровневые операции распределяются по потокам?

    Вот есть неплохая статья по этой теме.
    И вот здесь и здесь более детально.
    Ответ написан
    Комментировать
  • Как в python3 загрузить всю страницу сайта?

    LazyTalent
    @LazyTalent
    Data Engineer, Freelancer
    Открыть панель разработчика, посмотреть на какой адрес и какой запрос отправляется в момент подгрузки новых изображений, эмулировать запрос. Tutorial
    Ответ написан
    Комментировать
  • Как динамически подключать библиотеки?

    @Ariox41
    Посмотрите в сторону boost::DLL

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

    В документации много примеров, особых проблем не должно возникнуть.

    Пример из документации, на всякий случай:
    // my_plugin_api.hpp
    #include <string>
    
    class my_plugin_api {
    public:
       virtual std::string name() const = 0;
       virtual float calculate(float x, float y) = 0;
    
       virtual ~my_plugin_api() {}
    };

    Реализация плагина:
    // my_plugin_sum.cpp
    #include <boost/config.hpp> // for BOOST_SYMBOL_EXPORT
    #include "../tutorial_common/my_plugin_api.hpp"
    
    namespace my_namespace {
    
    class my_plugin_sum : public my_plugin_api {
    public:
        my_plugin_sum() {
            std::cout << "Constructing my_plugin_sum" << std::endl;
        }
    
        std::string name() const {
            return "sum";
        }
    
        float calculate(float x, float y) {
            return x + y;
        }
    
        ~my_plugin_sum() {
            std::cout << "Destructing my_plugin_sum ;o)" << std::endl;
        }
    };
    
    // Exporting `my_namespace::plugin` variable with alias name `plugin`
    // (Has the same effect as `BOOST_DLL_ALIAS(my_namespace::plugin, plugin)`)
    extern "C" BOOST_SYMBOL_EXPORT my_plugin_sum plugin;
    my_plugin_sum plugin;
    
    } // namespace my_namespace

    Собственно, загрузка библиотеки:
    #include <boost/dll/import.hpp> // for import_alias
    #include <iostream>
    #include "../tutorial_common/my_plugin_api.hpp"
    
    namespace dll = boost::dll;
    
    int main(int argc, char* argv[]) {
    
        boost::filesystem::path lib_path(argv[1]);          // argv[1] contains path to directory with our plugin library
        boost::shared_ptr<my_plugin_api> plugin;            // variable to hold a pointer to plugin variable
        std::cout << "Loading the plugin" << std::endl;
    
        plugin = dll::import<my_plugin_api>(          // type of imported symbol is located between `<` and `>`
            lib_path / "my_plugin_sum",                     // path to the library and library name
            "plugin",                                       // name of the symbol to import
            dll::load_mode::append_decorations              // makes `libmy_plugin_sum.so` or `my_plugin_sum.dll` from `my_plugin_sum`
        );
    
        std::cout << "plugin->calculate(1.5, 1.5) call:  " << plugin->calculate(1.5, 1.5) << std::endl;
    }

    Вывод:
    Loading the plugin
    Constructing my_plugin_sum
    plugin->calculate(1.5, 1.5) call:  3
    Destructing my_plugin_sum ;o)
    Ответ написан
    Комментировать
  • Как работает генератор случайных чисел?

    TrueBers
    @TrueBers
    Гуглю за еду
    rand()в C++ является уязвимым и будет удалён из стандарта.
    Сейчас рекомендуется пользоваться реализацией алгоритма Mersenne Twister
    Ответ написан
    Комментировать
  • Как и в чем лучше написать программу для Desktop?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Ну так и напишите на С++ QT
    Ответ написан
    Комментировать
  • Многопользовательский сервер python

    DeNnEr
    @DeNnEr
    С самого начала ты пошёл в верную сторону — Twisted.
    Если уж ты и хочешь «шустрый, отказоустойчивый сервер», то лучший вариант — писать такое приложение на Twisted, как библиотеку, разработанную для этих целей. Тем более что примеров там хватает(http://twistedmatrix.com/documents/current/core/examples/#auto0)
    Если тебе просто нужно смоделировать такую систему, то тебе нужно сделать нормальную схему работы.
    Я бы тебе посоветовал почитать про TCP, тогда это тебя избавит от проблем синхронизации, т.к. алгоритм будет многим проще(хинт: погугли чем различаются UDP и TCP).
    А вообще, судя по тому, что ты пишешь систему на языке, который не изучал(т.е. вам его не преподавали?), значит что преподаватель просто дал случайную задачу, чтобы тебя занять чем-то интересным. В таком случае я тем более советую изучать Twisted, т.е. больше нового узнаешь, будет опыт и о большем сможешь рассказать.
    Если же вас обучали Python'у, но ты прогулял, то… Ну плохо дело, всё-равно учи Twisted или бегай по форумам, сцеживай решение. И да, если у вас обучали Python'у, будь добр, скажи что за учебное заведение.
    Ответ написан
    2 комментария
  • Создание вектор массивов C++? И как добавлять туда данные?

    TrueBers
    @TrueBers
    Гуглю за еду
    Какие массивы, какие элементы? Что вам скажет ваш код через год-другой, когда вы увидите массив из шести "чего-то"?
    Почему бы не объявить обычную структуру вида
    struct Point { // понятно, что это координаты точки, а не абстрактные буквы в вакууме
      double x, y;
    };

    и дальше для каждой группы создать тоже структуру
    // имена, конечно, надо заменить на что-то, имеющее отношение к вашей задаче
    struct Bundle { // здесь понятно, что это какая-то композиция из трёх точек
      Point p1, p2, p3;
    };

    ну, и вектор этих структур
    std::vector<Bundle> v; // а здесь — вектор из этих композиций из трёх точек
    // добавляем
    v.emplace_back(Bundle{{ 0.0,  0.1},
                          {0.15, 0.05},
                          { 1.0,  0.5}});
    Ответ написан
    Комментировать