Как стать автором
Обновить
303.93

Алгоритмы *

Все об алгоритмах

Сначала показывать
Порог рейтинга
Уровень сложности

Построение годографа точки звуковой волны в изотропной среде при изменении ветра по высоте в вертикальной плоскости

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 435

Построение годографа точки звуковой волны в изотропной среде при линейном изменении скорости с высотой. Возврат к геометрической акустике.

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 0

Новости

Инь-Ян консолидация для процедурной генерации границ

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 853
Способ процедурной генерации граничного перехода от одной среды к другой, которые заданы на какой-либо регулярной решетке точек в квадрате или равностороннем треугольнике. Допускает обобщение на произвольные фигуры, а также на любые тайловые покрытия.

yin yang consolidation, four mediums
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 3

Кодируем крестики-нолики в 15 битах

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 7.9K

Недавно я наткнулся на пост Алехандры Гонсалес (@blyxyas), в котором рассказывается о попытке сжать игру крестики-нолики в минимальное количество битов. Она пришла к решению из 18 битов. Это заставило меня задуматься: а можно ли улучшить этот результат?

Как говорит Алехандра, существует 765 возможных состояний игры1. Мы можем просто назначить число каждому состоянию, что займёт 10 битов2. Но, по словам Алехандры, это «скучно». С таким описанием игры мы практически ничего не сможем сделать. Когда будет нужно считать значение из конкретной ячейки или перейти из одного состояния в другое, на практике нам придётся использовать таблицу поиска, сопоставляющую каждое число с более крупным и структурированным описанием, что делает бессмысленным саму идею сжатого описания.

Читать далее
Всего голосов 43: ↑41 и ↓2 +39
Комментарии 33

Нахождение порогов с оптимальным балансом классов

Время на прочтение 1 мин
Количество просмотров 803

Решим такую алгоритмическую задачу: дано множество точек (x_i,y_i) на плоскости, имеющих метки 0 или 1. Требуется выделить область \{x\geq a \,\&\, y \geq b\}, в которой отношение числа 1 к числу 0 максимально, при условии, что число нулей в этой области не меньше заданного числа.

Читать далее
Рейтинг 0
Комментарии 5

Истории

ИИ в 3D: Где мы сейчас и какое будущее нас ждёт? (Часть 2)

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 3.1K

В предыдущей статье мы уже затрагивали задачу реконструкции 3D-объектов по их 2D-изображениям. В этой же углубимся в реконструкцию с головой! Вообще говоря, как мне кажется, сейчас мы рассмотрим гораздо более концептуально интересные методы, а именно - HSP и Mesh R-CNN. Это база, которая просто должна осесть в головах всех любителей ИИ в 3D!

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 0

PQ3, Apple’s New iMessage Security Protocol: что нового?

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 1.1K

Хоть убейте, не нашёл отличий. Впервые увидел на Коде Дурова, там, как обычно, не дали подробностей. Ключи используются от устройств, ну и что? Сейчас не также? Также. Приватный ключ здесь, публичный остальным, приватный никому не показываем. Всё, пошло поехало.

Но это же Apple! Не может всё так быть просто. Окей, ищу дальше, натыкаюсь на securitylab, там уже побольше подробностей.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 1

Когда в первый рабочий день джуном смотришь на свои задачи…

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 55K

Привет, Хабр!

Собственно, а все ли поняли мем?

Человек прошел обучение, отбор посредством собеседования, имеет багаж знаний. После освоения навыков, набравшись практики (в наши дни стать junior-разработчиокм без практики нереально) добравшись до цели в виде трудоустройства. Не успев толком продышаться сразу сталкивается с такой вещью как бизнес процессы. Пытается понять что от него хотят коллеги по работе и как тут вообще все устроено. Он чувствует растерянность. Но тут стоит оговориться что бизнес это конкурентная среда. Там всем приходится непросто. Смотрите: программист это ремесленник, инструмент которым он пользуется сложный и не понятный - это его собственный мозг. Своим мозгом он обслуживает бизнес процессы. Решает задачи за счет которых приложение работодателя остается в рабочем состоянии и развиваются с точки зрения прибыли. Поток этих задач такой, что нет времени плавно погружаться в процесс, надо срочно в бой. Если вы не знакомы с программированием, взгляните на примеры кода и вы примерно ощутите тоже самое что junior-разработчик в свой первый рабочий день.

Читать далее
Всего голосов 31: ↑4 и ↓27 -23
Комментарии 110

Переворачивающиеся при умножении числа

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 19K

Здравствуйте!

Расскажу о серии задач, которая случайно возникла в процессе решения другой задачи. Мне на глаза попалось равенство:

81 * 27 = 2187

– Интересно, – подумал я. – А бывают ли ещё такие числа, чтобы цифры слева и справа повторялись?

Читать далее
Всего голосов 67: ↑67 и ↓0 +67
Комментарии 45

Интерактивная диаграмма Ганта для тысяч работ

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 14K

Всем привет! Я расскажу, с помощью каких алгоритмов и архитектуры можно разработать с нуля интерактивную диаграмму Ганта, способную без лагов отображать тысячи задач.

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 9

Как хранить токены и пароли в программах на Python

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 16K

Уже на первом этапе изучения языка python я думаю все, как и я, озадачиваются вопросом – как быть с секретными данными – логины, пароли, токены и т.п. Как и где их хранить? Ну не прописывать же их явно в тексте программы, а потом еще и на Гитхабе размещать. Особенно эта тема актуальна в сфере алготрейдинга, здесь думать о доступах и секретности паролей надо в первую очередь.

Информации в сети достаточно. Но я решил кратко законспектировать основные варианты, для быстрого понимания только начинающих изучать этот вопрос.

Читать далее
Всего голосов 17: ↑5 и ↓12 -7
Комментарии 16

Материалы для подготовки к собеседованию на позицию Data Scientist. Часть 1: Live Coding

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 9.7K

В данной статье разберемся что такое live coding интервью и как к нему готовиться.

Материал в первую очередь будет полезен Data Scientist'ам и ML инженерам, при этом некоторые разделы, например, Алгоритмы и структуры данных подойдут всем IT специалистам, которым предстоит пройти секцию live coding.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 2

Как устроен языковой сервер

Время на прочтение 7 мин
Количество просмотров 3.4K
В этом посте я хочу прокомментировать один любопытный комментарий из базы кода rust-analyzer. Вот этот комментарий.

Здесь описан интересный рекурсивный алгоритм, неоднократно встречающийся в разных аспектах программирования языковых серверов. Я видел реализации такого алгоритма на Kotlin и C#, а затем сам реализовал его на Rust.

Вот, казалось бы, рандомная подборка возможностей IDE:

  • Переход к определению
  • Завершение кода
  • Прогон теста на курсоре
  • Извлечение переменной

Что общего между ними? Все эти возможности относятся к актуальному положению курсора! В данном случае вводом служит не только состояние кода в конкретный момент времени, но и конкретное расположение исходников проекта, например src/main.rs:90:2.
Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 2

Новый рекорд производительности FizzBuzz

Уровень сложности Средний
Время на прочтение 18 мин
Количество просмотров 5.6K

283 ГБ/с на AMD Ryzen 9 7700X.

Сборка (протестирована с GCC 13):

g++ fizzbuzz.cc -march=native -o fizzbuzz -O3 -Wall -std=c++20 -fno-tree-vectorize -fno-exceptions

На сборку уходит несколько минут. В зависимости от CPU можно добиться повышенной производительности с -fno-tree-vectorize или без этого ключа.

Читать далее
Всего голосов 19: ↑17 и ↓2 +15
Комментарии 3

Ближайшие события

DI CONF SMM — большая конференция по соцсетям в России
Дата 2 марта
Время 09:30 – 18:00
Место
Краснодар Онлайн
Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

О чем говорят руки. 2 место на соревновании Kaggle + код решения

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 4.5K

Приветствую всех читателей! Меня зовут Артем Топоров, и сегодня я хочу поделиться с вами своим опытом участия в соревновании по распознаванию жестового языка, организованном компанией Google. На этом соревновании, собравшем 1139 команд со всего мира, нам удалось занять 2 место. Расскажу как мы вместе с Николаем Форратом и Xun Zhao разработали ML алгоритм для мобильных устройств, едва не заняли первое место и при чем тут спектрограммы. Вы можете использовать наш код, так как он распространяется под лицензией Apache 2.0.

Читать далее
Всего голосов 47: ↑47 и ↓0 +47
Комментарии 15

Полиномиальные корневые методы синтеза САУ ч.2

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 1.7K

Леонид Маркович Скворцов. Широко известный в узких кругах математик, профессионально занимающийся математическими проблемами автоматического управления. Например, его авторские методы использованы в SimInTech. Данный текст, еще готовится к публикации. Но с разрешения автора, читатели Хабр будут первыми кто сможет оценить. Первая часть здесь...

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 2

Обзор библиотеки Stan в R

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 965

Приветствую!

Stan - это библиотека на C++, предназначенная для байесовского моделирования и вывода. Она использует сэмплер NUTS, чтобы создавать апостериорные симуляции модели, основываясь на заданных пользователем моделях и данных. Так же Stan может использовать алгоритм оптимизации LBFGS для максимизации целевой функции, к примеру как логарифмическое правдоподобие.

Для облегчения работы с Stan из языка программирования R доступен пакет rstan, который предоставляет интерфейс R для Stan.

Сегодня мы и рассмотрим этот пакет.

Читать далее
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 0

Вороной, Манхэттен, рандом

Уровень сложности Простой
Время на прочтение 34 мин
Количество просмотров 13K

Это история про то, как не довести дело до конца, но получить уйму опыта, и вообще ни разу не обломаться.

Итак, у нас был один программист, один художник, абсолютное непонимание рабочего процесса, незнакомый нам игровой движок и желание что-то намутить. Если вам интересно, как в одном месте сошлись карта Вороного, частный случай расстояния Минковского, преобразования над полигонами, процедурная генерация и шумы — и все это в красивой стилизованной обертке, то вам под кат.

Осторожно, очень много картинок!

Читать далее
Всего голосов 149: ↑149 и ↓0 +149
Комментарии 52

Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра

Уровень сложности Средний
Время на прочтение 33 мин
Количество просмотров 64K

Привет, Хабр!

Так уж повелось, что любой уважающий себя работодатель перенимает передовые^✻ методики FAANG — по этой причине практически во всех IT-собесах есть она: секция алгоритмов. Кто-то ей рад, кто-то не очень, но секция есть и уходить пока не планирует. Поэтому нужно закатать рукава и достойно встретить суровую реальность.

Читать далее
Всего голосов 202: ↑200 и ↓2 +198
Комментарии 77

Работа процессора (физический препроцессор) без счётчика команд

Уровень сложности Сложный
Время на прочтение 6 мин
Количество просмотров 1.7K

Тех кто ожидает наукоёмкости от чтения - сразу прошу не читать, тут нет ничего на что можно было-бы сослаться кроме собственнных работ, а значит и наукоёмкости публикации не содержит - прошу простить заранее за такую дерзость, и заметить что предупреждение мной всё же об этом было.

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

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

Читать далее
Всего голосов 10: ↑3 и ↓7 -4
Комментарии 16

Компилятор за выходные: избавляемся от переменных

Уровень сложности Средний
Время на прочтение 15 мин
Количество просмотров 11K

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

Продолжаем разговор о минималистичном компиляторе, который вполне реально написать за выходные. Задачей стоит транслировать код из придуманного мной языка в x86 ассемблер. Мой компилятор состоит из 611 строк кода, при этом не имеет ни единой зависимости:

ssloy@khronos:~/tinycompiler$ cat *.py|wc -l

611

Несмотря на то, что мой компилятор выдаёт ассемблер, я не мазохист, и пришёл к этому постепенно, сначала я транслировал код в питон, и постепенно урезал функционал целевого языка, пока не остался голый ассемблер, см. обложку публикации.

Итак, тема сегодняшнего разговора: генерация кода на питоне без использования переменных.

Читать далее
Всего голосов 43: ↑42 и ↓1 +41
Комментарии 33

Вклад авторов