Как стать автором
Обновить
78.94
Рейтинг

Алгоритмы *

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

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

Первые 255 задач на «‎литкоде»‎

Программирование *Алгоритмы *
Были годные статьи об аргументированной пользе алгоритмов (например, habr.com/ru/company/geekfactor/blog/597035), тут хочется поделиться личным опытом.

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

Что дано: фронтэнд с элементами nodejs разработки. Знаю javascript, взял java из-за общего префикса и Брюса Эккеля. Язык годный, легко читать, осознал что надо оч много писать после 175 задачек на ресурсе под именем leetcode. Попробовал язык мобилок, язык прекрасный, но не для мобилок. Swift прекрасен и будет еще прекраснее в будущем. До наступления прекрасного будущего решил юзать питон: легко и мало писать, но трудно читать — да и пофиг, так как каждый день новая задачка.
Читать дальше →
Всего голосов 12: ↑6 и ↓6 0
Просмотры 12K
Комментарии 12

Новости

Как улучшить любой патент на изобретение в IT, на примере Яндекса

Алгоритмы *Управление разработкой *Развитие стартапа Патентование *

«За всю историю человечества было выдано 50 млн. патентов.
Задача — сделать 1 млрд. новых изобретений».
@MagisterLudi

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

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

Алгоритмы и рыбалка: как работает мозг программиста в естественной среде обитания

Блог компании УБРиР Алгоритмы *
Recovery mode

Привет, меня зовут Валерий Антонов, я руковожу направлением Java в Уральском банке реконструкции и развития (УБРиР). Сегодня расскажу, как я смог переложить систему алгоритмов на, казалось бы никак с этим не связанное хобби, - рыбалку.

Читать далее
Всего голосов 5: ↑2 и ↓3 -1
Просмотры 1.7K
Комментарии 5

Загадки быстрого преобразования Фурье

Программирование *Алгоритмы *Математика *Звук Визуальное программирование *
Tutorial

• Метод фазово-амплитудной интерполяции (ФАИ)

• Точное определение частоты, амплитуды и фазы гармоник сигнала

• Выявление резонансов

Алгоритм быстрого преобразования Фурье (БПФ) - важный инструмент для анализа и обработки сигналов различной природы.

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

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

В статье представлен действенный способ преодоления таких "неудобных" особенностей алгоритма.

Читать на английском

Читать на русском
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 4K
Комментарии 92

Экономическая модель для ММО

Анализ и проектирование систем *Разработка игр *Алгоритмы *Прототипирование *Криптовалюты

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

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 4.2K
Комментарии 37

Обработка данных криптовалютного рынка в RavenDB с использованием временных рядов

Блог компании RUVDS.com Алгоритмы *Финансы в IT Криптовалюты
Перевод
Что если можно было бы хранить данные временных рядов вместе с «обычными» данными, избавившись от затрат времени, сил и ресурсов, связанных с использованием отдельной СУБД?

RavenDB — это документо-ориентированная NoSQL-база данных, оснащённая стандартной поддержкой работы с временными рядами. То есть — получается нечто вроде MongoDB со встроенной InfluxDB. Это позволяет применять RavenDB для хранения и обработки данных, получаемых с финансовых рынков. В частности — строить графики цены Bitcoin с использованием C# и TypeScript.

Вот 5-минутное видео, в котором приведено сравнение поддержки временных рядов в RavenDB с их поддержкой в других подобных системах.

В этом видео идёт речь об интересных рыночных данных и о построении ценовых графиков по образцу популярного приложения для трейдинга, разработанного компанией Robinhood. Данный материал посвящён разбору демонстрационного приложения. Когда вы его освоите, вы должны получить представление о том, как работать с временными рядами в RavenDB.
Читать дальше →
Всего голосов 29: ↑29 и ↓0 +29
Просмотры 2.4K
Комментарии 1

Азбука блокчейна: протоколы и алгоритмы консенсуса

Алгоритмы *Криптовалюты
Из песочницы

Всем привет! Для тех, кто уже читал мои посты о блокчейне хочу сказать, что рад вас видеть снова на своей странице. Для тех, с кем мы еще не знакомы, меня зовут Валерий, я junior developer в западном стартапе, приятно познакомиться. 

Я как-то уже писал о том, что мы собираем свою “Википедию” о технологиях на крипторынке. Сейчас мой фокус внимания смещен на все составляющие блокчейна, я продвигаюсь снизу вверх, чтобы лучше понять, как это все работает. И вот мне в связи с работой постоянно попадались некоторые обозначения, которые мне поначалу казались синонимами. 

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 4.9K
Комментарии 8

Сага о моделировании бизнес-процессов на базе конечного автомата (fsm)

Блог компании STM Labs Python *Анализ и проектирование систем *Алгоритмы *

Про конечные автоматы (finite state machine, fsm) много кто слышал, но используют их явно в реальных проектах редко. Чаще встречаются конструкции, которые поведением напоминают КА, но ими не являются.
Почему же автоматы обходят стороной и/или изобретают велосипеды, превращая код в спагетти?
По-моему, тут дело в стереотипе: мол, автоматы — это что-то сложное из теоретической математики и к реальной жизни не относится. А применять их можно только в лексических анализаторах или еще чем-нибудь специфичном.


На самом деле, область применения КА куда шире и понятнее. Давайте разберем на примере автоматизации процессов в любимом кровавом enterprise.


Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 1.8K
Комментарии 6

Асинхронная обработка данных (асинхронные вычисления). Анализ поведения

Анализ и проектирование систем *Алгоритмы *FPGA *
Tutorial
На первый взгляд кажется, что в асинхронном дизайне обработки данных изобрести что-либо новое маловероятно. Действительно, все возможные приемы и компоненты синтеза уже давно известны: и кодирование, и многофазность, и индикация, и хэндшейк, и С-элементы, и пороговые элементы… Но, в отношении практически любого метода асинхронной обработки данных можно достаточно уверенно утверждать: все они заведомо избыточны. Причина такого положения видится в несколько поверхностном понимании различий между асинхронными и синхронными схемами. Принято считать, что асинхронной является такая схема, в которой отсутствует тактовый сигнал. Отсюда вытекает и решение: достаточно взять за основу архитектуру синхронного дизайна (комбинационную логику, регистры), а тактовый сигнал заменить какой-то управляющей схемой. Таким подходом в той или иной мере грешит практически любой метод. Блочный синтез — идея более оригинальная, но от этого не менее избыточная.

Однако различие меду синхронными и асинхронными схемами носит более существенный характер. Синхронные схемы отличаются наличием временных интервалов, маскируемых тактовым сигналом. И эти временные интервалы включают все переходные процессы. То есть синхронные схемы не рассматривают переходные процессы и имеют дело только с результатами переходных процессов. Таким образом синхронная схема по сути представляет собой причинно-следственные отношения на множестве состояний. Асинхронные же схемы рассматривают как результат переходного процесса, так и сам процесс. Говорить в этом случае о состояниях можно лишь с большой долей условности. Переходный процесс и его результат описываются таким явлением, как событие (переключение сигнала). И асинхронная схема представляет собой те же причинно-следственные отношения только на множестве событий.
Читать дальше →
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 1.5K
Комментарии 9

Как написать решатель «Пятнашек» на C#

Блог компании SkillFactory Программирование *Алгоритмы *C# *Логические игры
Перевод
Tutorial

Цель этой статьи — пробудить интерес читателей к удивительному миру и показать различные способы решения таких же интересных головоломок, как «Пятнашки». Создайте свою базу данных с шаблонами и начните решать головоломки менее чем за 50 миллисекунд. Материалом делимся к старту курса по разработке на C#.

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

Проверка ценников в магазине с помощью YOLOv4-Tiny+EasyOCR

Блог компании Samsung Python *Алгоритмы *Машинное обучение *Искусственный интеллект

Привет всем читателям Хабра! Нас зовут Сергей и Павел, мы студенты Томского государственного университета систем управления и радиоэлектроники (ТУСУР). В прошлом году мы победили в треке “Искусственный интеллект” IV Межвузовского конкурса выпускных проектов «‎IT Академии Samsung»‎. Там мы представили проект, использующий нейронные сети для анализа информации на ценниках.

Мы распознавали ценники сети магазинов “Лента” при помощи нейронных сетей для сегментации и OCR и теперь хотим рассказать о том, как проходила работа над проектом и что мы узнали за это время.

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 5.7K
Комментарии 26

N (Насти) алгоритм

Алгоритмы *

Памяти Насти. Памяти дочери.

Что знаем об алгоритмах поиска? Есть граф. Чаще ориентированный. И некое целевое состояние. Фиксированное. А если нет?

Как, например, найти ребенка, который потерялся в лесу? Ведь не только вы его будете искать, но и он вас.

Передвигаться случайно? Да. Но еще лучше выбирать те направления, где меньше всего были. Есть дополнительные признаки, например следы? Отлично. В первую очередь ориентируемся на них. Потерялись следы? Вновь возвращаемся к поиску с учетом только памяти.

Читать далее
Всего голосов 17: ↑14 и ↓3 +11
Просмотры 8.8K
Комментарии 6

Создание APP для самотестирования (Python)

Python *Алгоритмы *Интерфейсы *
Tutorial

Недавно от знакомых прилетела задачка написать программу для самотестирования. Порылся в инете, думал в лёгкую найду наработки, но ничего кроме платных и бесплатных конструкторов тестов не нашёл (может плохо искал, кто знает…). Мне показалось, что устанавливать какие-то инородные проги, а потом ещё туда все вопросы ручками забивать - совсем некрасиво. Так родилось приложение для самотестирования, написанное на Python с помощью GUI библиотеки Tkinter.

Заценим!
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 2.4K
Комментарии 14

Кто такой Thread Pool и как его написать своими руками на С++

C++ *Алгоритмы *
Из песочницы

Thread Pool достаточно популярный паттерн в программировании, с которым рано или поздно сталкивается каждый первый программист. Если вы новичок и не хотите бездумно пользоваться пулом потоков, то эта статья поможет вам разобраться с его устройством и написать наивные реализации с использованием С++ 14 и С++ 17. Так же статья будет полезна всем, кто изучил теорию по многопоточности, но не знает как можно применить свои знания.

Читать далее
Всего голосов 8: ↑4 и ↓4 0
Просмотры 8.7K
Комментарии 8

Спортивное программирование: не все так просто, как кажется

Спортивное программирование *C++ *Алгоритмы *
Из песочницы

Меня зовут Абай Баймуканов, я – разработчик-алгоритмист международной IT-компании Relog. Уже несколько лет увлекаюсь олимпиадными программированием, поэтому в этой статье хотел бы поделиться своим видением по этому поводу.

Быть олимпиадником по спортивному программированию довольно весело и интересно. Но быть жюри и составителем задач для самих олимпиад – достаточно ответственное и не менее интересное дело. Спортивное программирование - это те же математические задачки на логику, которые всего то нужно решить. Но программирование, в отличие от любого другого предмета, уникально тем, что решение нужно еще и реализовать в виде компьютерной программы.

Здесь есть свой нюанс: программа может работать настолько долго, сколько не существует даже вселенная, а может сработать за долю секунды. Причем в обоих случаях результат будет один и тот же. Любой олимпиадник стремится к тому, чтобы его программа была как можно эффективнее. Для этого существуют алгоритмы и структуры данных - методы, позволяющие сделать определенные программы более эффективными с точки зрения необходимого времени или памяти компьютера.

Спектр сложности у задач по спортивному программированию достаточно широкий: от задач для новичков до задач мирового уровня для вундеркиндов. Большинство соревнований проводится практически одном и том же формате, то есть дается несколько задач, на их решение 5 часов и за это время нужно решить как можно больше.

На школьных олимпиадах обычно за каждую задачу можно получить от 0 до 100 баллов и общим результатом будет суммарный балл за все задачи, у студентов в результат идет просто количество решенных задач, а если есть участники, решившие одно и то же количество задач, то они группируют по убыванию штрафа. Чем дольше решаешь задачу или чем больше на них нужно попыток решить, тем больше штрафов за нее получишь.

Читать далее
Всего голосов 18: ↑11 и ↓7 +4
Просмотры 7.4K
Комментарии 21

Эзотерическая оптимизация газа в Solidity

Высокая производительность *Алгоритмы *Solidity *Криптовалюты

Программирование в Солидити отличается от других языков, так как каждое инструкция и байт памяти тратят газ - деньги пользователей. В сети уже есть много ресурсов с основными техниками оптимизации кода (например, стараться использовать calldata вместо memory), но я хочу показать несколько совсем безумных и неочевидных.

Понять о чем я говорю без базового опыта в solidity будет очень сложно, но может быть эти оптимизации проявят в вас интерес в ethereum программировании.

Читать далее
Всего голосов 12: ↑9 и ↓3 +6
Просмотры 1.8K
Комментарии 4

Репликация с нуля за 5 простых шагов (невозможна)

Блог компании VK Алгоритмы *Хранение данных *Tarantool *
Меня зовут Сергей Петренко, я работаю в команде кластерных технологий Tarantool. В прошлом году я рассказывал о том, как в Tarantool появилась синхронная репликация и поддержка автоматических выборов лидера на основе Raft. Теперь предлагаю погрузиться во «внутренности» репликации в Tarantool. Я расскажу, как устроена репликация, по какой логике она работает и почему самые очевидные решения не всегда самые оптимальные.

Если вы давно хотели углубиться в эту тему и разобраться в устройстве репликации на живом примере, то эта статья для вас.
Читать дальше →
Всего голосов 32: ↑32 и ↓0 +32
Просмотры 4.3K
Комментарии 2

Алгоритм Томасуло как фактор импортозамещения российских процессоров

Алгоритмы *FPGA *Программирование микроконтроллеров *Производство и разработка электроники *Процессоры

Проектированием простого процессора сейчас никого не удивишь. Любой способный студент может за пару недель написать на верилоге однотактный RISC-V или ARM процессор и синтезировать его для ПЛИС. Процессор будет работать на учебной плате и выполнять простые программы на Си и ассемблере.

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

На границе между вводным и продвинутым курсом микроархитектуры CPU принято ставить внеочередное выполнение инструкций, именно оно отделяет мальчика от мужа. Эта фича впервые появилась еще в 1960-е годы в суперкомпьютерах CDC 6600 и IBM 360/91, но проникла в персоналки с PentiumPro только в 1996 году и в Apple iPhone в 2012 году.

Именно внеочередное выполнение инструкций - главная козырная карта самого горячего процессорного проекта российской микроэлектроники - двухгигагерцового RISC-V процессора для ноутбуков от компании Ядро / Syntacore. Этот проект был объявлен в прошлом году. Что с ним станет в результате известных событий?

Читать далее
Всего голосов 108: ↑88 и ↓20 +68
Просмотры 35K
Комментарии 121

Эвекция Луны, Вариация Луны, Звездный Лунный месяц в часовых отрезках времени в радиоактивном распаде

Python *Алгоритмы *
Recovery mode
Читать далее
Всего голосов 14: ↑6 и ↓8 -2
Просмотры 948
Комментарии 6

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