Архив рубрики: Программирование

Python: динамическая подмена класса

Юзкейс Есть функция-фабрика, возвращающая объект класса A. Функция из сторонней либы, менять ее нельзя (либо вообще ее код закрыт). А нам очень нужно сделать класс B, наследованный от A, и перекрыть magic-метод, скажем __exit__. Проблема в том, что объекты класса A … Читать далее

Рубрика: На заметку, Программирование, Решение проблем | Метки: , | Добавить комментарий

Калибровка компаса — Хардкор

Этот пост немного выбивается из общей тематики блога и будет интересен скорее интересующимся DIY и роботостроением, чем программистам, однако нам пригодится все: и навык программирования в области анализа данных, и математическая смекалка, и 3D-воображение 🙂   Небольшое интро Очень часто … Читать далее

Рубрика: DIY, Алгоритмы, Программирование | Метки: , , , , , , , | 26 комментариев

Рандом с учетом весов за O(1) — Walker’s alias method

Есть массив A[n] с весами. Нужно выбрать случайный элемент, но не равномерным рандомом, а в соответствии с этими весами. (В общем, это дискретное распределение вероятности) Чем примечателен метод алиаса, так это константным временем выполнения O(1)

Рубрика: Алгоритмы, Программирование, Разное | Метки: , , , | 2 комментария

Поворот в пространстве и кватернионы

Ориентация в пространстве Термин «ориентация» подразумевает наличие какой либо начальной системы координат, относительно которой ориентация будет являться простым поворотом. Например, она могла бы быть привязана к Земле, если мы определяем положение относительно нее, или, другой пример, к туловищу модели, ориентацией … Читать далее

Рубрика: Алгоритмы, Программирование | Метки: , | 16 комментариев