Data Science: Алгоритмы и Структуры данных
Відкрити в Telegram
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество: @oleginc Канал на бирже: https://telega.in/c/structuredata
Показати більше7 577
Підписники
-424 години
-187 днів
-6330 днів
Архів дописів
Когда в первый рабочий день джуном смотришь на свои задачи…
Человек прошел обучение, отбор посредством собеседования, имеет багаж знаний. После освоения навыков, набравшись практики (в наши дни стать junior-разработчиокм без практики нереально) добравшись до цели в виде трудоустройства. Не успев толком продышаться сразу сталкивается с такой вещью как бизнес процессы. Пытается понять что от него хотят коллеги по работе и как тут вообще все устроено. Он чувствует растерянность. Но тут стоит оговориться что бизнес это конкурентная среда. Там всем приходится непросто. Смотрите: программист это ремесленник, инструмент которым он пользуется сложный и не понятный - это его собственный мозг. Своим мозгом он обслуживает бизнес процессы. Решает задачи за счет которых приложение работодателя остается в рабочем состоянии и развиваются с точки зрения прибыли. Поток этих задач такой, что нет времени плавно погружаться в процесс, надо срочно в бой. Если вы не знакомы с программированием, взгляните на примеры кода и вы примерно ощутите тоже самое что junior-разработчик в свой первый рабочий день.
Если ИТ вас заинтересовало
С мемом вроде понятно, но раз мы на Хабре, давайте копнем глубже. Представим что junior-разработчик чувствует после того как открывает книгу на 900 страниц что-бы разобраться в PHP (к слову пропорционально количеству вкладок в браузере). Думаю ощущения эти мягко говоря так себе. Открывать все это он вынужден по причине огромного количества языковых конструкций в проекте. За неимением опыта разработчику тяжело погрузиться в уже выстроенную работу с языком. И давайте поговорим зачем вообще нужно понимать что делает код.
https://habr.com/ru/articles/796047/
Алгоритмы и Структуры данных
Станьте IT-специалистом с зарплатой от 100 000 рублей бесплатно
👉 Только в феврале GeekBrains дарит 3 недельное обучение на профессию Python разработчика бесплатно.
Записавшись на обучение, вы получите не только технические знания, но и возможность войти в профессию с высоким спросом и перспективами для карьерного роста.
Не упустите шанс начать свой путь в IT с поддержкой опытных преподавателей и располагающей обучающей средой.
Зарегистрируйтесь сейчас и получите бонусом карьерную консультацию.
Реклама. Информация о рекламодателе по ссылкам в посте.
Переворачивающиеся при умножении числа
Расскажу о серии задач, которая случайно возникла в процессе решения другой задачи. Мне на глаза попалось равенство:
81 * 27 = 2187
– Интересно, – подумал я. – А бывают ли ещё такие числа, чтобы цифры слева и справа повторялись?
Всего нашлось 7 двузначных пар, включая одну с теми же цифрами:
15 * 93 = 1395
21 * 60 = 1260
21 * 87 = 1827
27 * 81 = 2187
30 * 51 = 1530
35 * 41 = 1435
80 * 86 = 6880
Затем я решил посчитать, сколько пар n-значных чисел удовлетворяют этому свойству: набор цифр и количество повторений каждой из них слева и справа от знака "равно" совпадают. Заметим, что произведение двух n-значных чисел может иметь как 2n-1, так и 2n знаков. (Можно вычислить, что доля пар n-значных чисел, для которых в произведении 2n знаков составляет примерно 82,7%).
Для небольших значений n я получил результат с помощью программы на Питоне. Алгоритм очень простой - берём все пары чисел, переводим в десятичное представление и сравниваем наборы цифр в паре чисел и в их произведении. На вычисление количества пар для n=5 ушло более 3 часов. Переписав на С++, на вычисление ушло 25 минут, но т.к. следующее значение требует рассмотрение в 100 раз больше пар, то ждать так долго не хотелось.
https://habr.com/ru/articles/795935/
Алгоритмы и Структуры данных
Интерактивная диаграмма Ганта для тысяч работ
В этой статье будут рассмотрены следующие проблемы:
Наши пользователи хотят отображать на диаграмме 1, 3, 5, а то и 10 тысяч работ.
На диаграмме работы должны быть отсортированы, при этом у некоторых имеются вложенные работы, т.е. у работы с номером '1.' может быть работа с номером '1.1.'. Работа с номером '1.1.' должна идти перед работой с номером '2.', и в то же время работа с номером '11.' должна идти после работы '2'. Лексикографическая сортировка здесь не подходит. Данные в БД изначально не отсортированы (удовлетворяют 1NF).
Пользователи хотят сворачивать вложенные работы. Если есть работа с номером '1.' с 1e3 вложенных работ, и пользователь её скрывает, он должен незамедлительно увидеть сразу после неё работу '2'.
Далее максимум внимания уделен архитектурным и алгоритмическим решениям сначала на фронт-энде, затем на бэк-энде. Мы используем популярное сочетание React + Nest + PostgreSQL, поэтому далее будут небольшие пояснения, как именно они ложатся на этот стэк.
https://habr.com/ru/articles/795923/
Алгоритмы и Структуры данных
Pornhub заплатит $14 за просмотр каждого ролика, который длится больше 20 минут
А «Вкусно и точка» подарит сертификат на 3000р, если оставить положительный отзыв в телеграме и отметить их аккаунт в сториз.
Канал Лимон 🍋 находит СОТНИ бизнес-подработок, с которыми даже лодырь сможет получать лишние 60-70 тысяч.
– Зритель фильмов на Кинопоиске – 4.000р за 2 часа
– Автор отзывов на Google Maps – 100р/штука
– Помощник блогера на ютубе – $600/мес
Подпишитесь, если хотите работать на себя и получать за это неплохие деньги: https://t.me/+EZ8uccJ8lX80MWYy
Как хранить токены и пароли в программах на Python
Уже на первом этапе изучения языка python я думаю все, как и я, озадачиваются вопросом – как быть с секретными данными – логины, пароли, токены и т.п. Как и где их хранить? Ну не прописывать же их явно в тексте программы, а потом еще и на Гитхабе размещать. Особенно эта тема актуальна в сфере алготрейдинга, здесь думать о доступах и секретности паролей надо в первую очередь.
Информации в сети достаточно. Но я решил кратко законспектировать основные варианты, для быстрого понимания только начинающих изучать этот вопрос.
https://habr.com/ru/articles/795881/
Алгоритмы и Структуры данных
Станьте Python-разработчиком за 0₽
Зарплата начинающего Python разработчика от 100 000₽, а стоимость обучения на профессию в онлайн-школах от 120 000 до 300 000 рублей.
Получите основы профессии и ключевые навыки за 3 недели практики.
⚠️ Переходите по ссылке и забирайте курс по Python — только до 26 февраля: https://go.2038.pro/785ad3d589bc03c0?erid=LdtCK7b7u&m=1
Разделяй и Властвуй. Разбор задач
Решение задач с помощью метода "Разделяй и Властвуй" или по-английски "Divide and Conquer" является одним из базовых методов по ускорению алгоритмов. Примером тому служит переход от квадратичной сложности пузырьковой сортировки или сортировки вставками к сложности \inline O(n\log{n}) при сортировке слиянием. Или переход от линейной сложности к логарифмической, при реализации поиска элемента в отсортированном массиве (см. бинарный поиск).
В этой статье мы рассмотрим два примера задач с пояснениями и кодом, в которых будет использоваться этот подход.
Для начала сформулируем, разделение и властвование. Решение задачи с помощью данного подхода обладает следующими тремя свойствами:
https://habr.com/ru/companies/otus/articles/599309/
Алгоритмы и Структуры данных
Подготовка к собеседованию на позицию Data Scientist. Часть 1: Live Coding
Привет! Меня зовут Артем. Я работаю Data Scientist'ом в компании МегаФон (платформа для безопасной монетизации данных OneFactor). Мы строим скоринговые (credit scoring), лидогенерационные (lead generation) и антифрод (anti-fraud) модели на телеком данных, а также делаем гео-аналитику (geoanalytics).
В январе 2022 года я создал репозиторий, чтобы хранить там ссылки на материалы по различным темам: подготовка к собеседованиям, computer science, data science, git, математика и многие другие. За все это время репозиторий разросся до таких размеров (и по количеству материалов, и по набору топиков), что я пришел к выводу, что нужно каким-то образом структурировать эту информацию.
В итоге, блок с материалами для подготовки к собеседованиям я решил выделить в отдельный репозиторий, а для того, чтобы было понятно как эти материалы использовать, было решено написать серию статей, первую из которых вы читаете прямо сейчас.
https://habr.com/ru/companies/megafon/articles/795261/
Алгоритмы и Структуры данных
Как устроен языковой сервер
В этом посте я хочу прокомментировать один любопытный комментарий из базы кода rust-analyzer. Вот этот комментарий.
Здесь описан интересный рекурсивный алгоритм, неоднократно встречающийся в разных аспектах программирования языковых серверов. Я видел реализации такого алгоритма на Kotlin и C#, а затем сам реализовал его на Rust.
https://habr.com/ru/companies/piter/articles/795335/
Алгоритмы и Структуры данных
Новый рекорд производительности FizzBuzz
283 ГБ/с на AMD Ryzen 9 7700X.
https://habr.com/ru/articles/794925/
Алгоритмы и Структуры данных
О чем говорят руки. 2 место на соревновании Kaggle
Соревнование под названием Google - Isolated Sign Language Recognition проводилось на платформе Kaggle и длилось около трех месяцев. Помимо Google в организации соревнования приняли участие Технологический институт Джорджии и организация D-PAN, которая поддерживает творческих профессионалов с нарушениями слуха. Целью данного соревнования было разработать алгоритмы для распознавания жестового языка. Эта инициатива была направлена на сокращение коммуникационного барьера между глухими и слышащими людьми, предлагая технологическое решение, которое могло бы облегчить процесс обучения языку жестов.
В следующих разделах я расскажу более подробно о технических аспектах соревнования, нашем подходе к решению задачи и о том, какие проблемы возникли у нас на этом пути.
https://habr.com/ru/articles/795109/
Алгоритмы и Структуры данных
Полиномиальные корневые методы синтеза САУ ч.2
Леонид Маркович Скворцов. Широко известный в узких кругах математик, профессионально занимающийся математическими проблемами автоматического управления. Например, его авторские методы использованы в SimInTech. Данный текст, еще готовится к публикации. Но с разрешения автора, читатели Хабр будут первыми кто сможет оценить. Первая часть здесь...
https://habr.com/ru/articles/793010/
Алгоритмы и Структуры данных
Хотите построить карьеру в сфере IT, но не знаете, с чего начать? Начните с изучения легендарного языка программирования — C++.
Разработчики на C++ работают в крупных IT-компаниях, геймдеве, веб-разработке, создают корпоративные и банковские приложения, проектируют операционные системы и софт для роботов.
Зарплаты разработчиков на С++ одни из самых высоких в отрасли. По данным сервиса zarplan. com, средняя зарплата таких специалистов на декабрь 2023 — 226 300 руб.
На онлайн-курсе «Профессия Разработчик на C++ с нуля» от Skillbox вы сможете освоить профессию всего за 7 месяцев:
✔️ Выучите С++ — универсальный язык, на котором пишут веб-приложения, игры, драйверы и десктопные программы.
✔️ Пополните портфолио проектами, среди которых поисковый движок.
✔️ Получите гарантию трудоустройства после курса. В противном случае — вам вернут деньги за курс.
Узнать подробнее и получить скидку до 50% можно здесь: https://epic.st/TUS01p
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
Обзор библиотеки Stan в R
Stan - это библиотека на C++, предназначенная для байесовского моделирования и вывода. Она использует сэмплер NUTS, чтобы создавать апостериорные симуляции модели, основываясь на заданных пользователем моделях и данных. Так же Stan может использовать алгоритм оптимизации LBFGS для максимизации целевой функции, к примеру как логарифмическое правдоподобие.
Для облегчения работы с Stan из языка программирования R доступен пакет rstan, который предоставляет интерфейс R для Stan.
Сегодня мы и рассмотрим этот пакет.
https://habr.com/ru/companies/otus/articles/794196/
Алгоритмы и Структуры данных
Вороной, Манхэттен, рандом
Это история про то, как не довести дело до конца, но получить уйму опыта, и вообще ни разу не обломаться.
Итак, у нас был один программист, один художник, абсолютное непонимание рабочего процесса, незнакомый нам игровой движок и желание что-то намутить. Если вам интересно, как в одном месте сошлись карта Вороного, частный случай расстояния Минковского, преобразования над полигонами, процедурная генерация и шумы — и все это в красивой стилизованной обертке, то вам под кат.
https://habr.com/ru/articles/794572/
Алгоритмы и Структуры данных
Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра
Так уж повелось, что любой уважающий себя работодатель перенимает передовые^✻ методики FAANG — по этой причине практически во всех IT-собесах есть она: секция алгоритмов. Кто-то ей рад, кто-то не очень, но секция есть и уходить пока не планирует. Поэтому нужно закатать рукава и достойно встретить суровую реальность.
При изучении алгоритмов расслабьтесь и получайте удовольствие, ведь есть ненулевая вероятность, что вам понадобятся полученные знания вне собеса. Кто знает, может однажды умение быстро обходить двоичное дерево поможет спасти вам мир (как и знание регулярок):
https://habr.com/ru/articles/794556/
Алгоритмы и Структуры данных
Работа процессора (физический препроцессор) без счётчика команд
Тех кто ожидает наукоёмкости от чтения - сразу прошу не читать, тут нет ничего на что можно было-бы сослаться кроме собственнных работ, а значит и наукоёмкости публикации не содержит - прошу простить заранее за такую дерзость, и заметить что предупреждение мной всё же об этом было.
На самом деле, ввиду прошлой публикации (последствия которой я постараюсь исправить, так как наверное многие решили что это плод воображения - новая архитектура) - препроцессора, так как рассматриваю процессор и пост процессор. Для того, чтобы понять ход мыслей лучше, и то, что всё это не фантазии, а результат работы - стоит ознакомиться с этой предыдущей публикацией, она не сильно длинная - но время отнимет, хоть и не сильно сложная.
Ознакомившись с ней станет понятно что имеется ввиду под модификациями кода (смена формул и выключение строк кода в рантайме), под модификациями кода подразумевается просто включение и выключение исполняемых команд, кода. Изначально мной предполагалось, что кэш мостов будет состоять из параллельных частей, и скорее всего в такой архитектуре конвейера он должен будет и обеспечивать работу меток и указателей (но сейчас не про них). В каких-то публикациях мне сделали замечания что мало графики и рисунков (вроде как про поляризацию для машинного зрения), но как можно увидеть из публикации по ссылке выше - оказалось достаточно одной блок-схемы чтобы отполировать и видоизменить весь код, и даже до той степени, чтобы задуматься о новой архитектуре.
https://habr.com/ru/articles/794544/
Алгоритмы и Структуры данных
Как я написал алгоритм сортировки, который быстрее std::sort
Это — продолжение моей предыдущей публикации (вот — первая, вторая и третья части перевода), посвящённой тому, как я создал алгоритм сортировки, который быстрее std::sort. Эта статья — мой шанс углубиться в те детали, о которых меня спрашивали в комментариях. Я собираюсь разъяснить здесь некоторые вещи, которые оказались непонятными аудитории, и поговорить о будущем моего алгоритма, о доработках, в которых он нуждается.
https://habr.com/ru/companies/wunderfund/articles/599249/
Алгоритмы и Структуры данных
Компилятор за выходные: избавляемся от переменных
Насколько сложные программы вы сможете написать на питоне, не пользуясь в принципе переменными (а также агрументами функций), за исключением пары глобальных массивов? Правильный ответ: да любой сложнсти. Если что-то можно сделать на ассемблере, то уж на питоне и подавно! Правда, пусть лучше вместо нас код генерирует машина :)
Продолжаем разговор о минималистичном компиляторе, который вполне реально написать за выходные. Задачей стоит транслировать код из придуманного мной языка в x86 ассемблер. Мой компилятор состоит из 611 строк кода, при этом не имеет ни единой зависимости:
ssloy@khronos:~/tinycompiler$ cat *.py|wc -l
611
Несмотря на то, что целевым языком является ассемблер, я не мазохист, и пришёл к этому постепенно. Сначала я транслировал код в питон, и постепенно урезал функционал целевого языка, пока не остался голый ассемблер. Тема сегодняшнего разговора: генерация кода на питоне без использования переменных.
https://habr.com/ru/articles/793524/
Алгоритмы и Структуры данных
