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

Алгоритмы *

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

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

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

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

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

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

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

Новости

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 90: ↑71 и ↓19 +52
Просмотры 20K
Комментарии 79

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

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

Руководство по динамическому программированию для новичков

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

Если вы достаточно давно занимаетесь программированием, то возможно вы слышали про термин "динамическое программирование". Чаще всего этот термин всплывает в технических собеседованиях, также появляется при обсуждении дизайна системы или при общении с другими разработчиками. В этой статье будет рассмотрено, что такое динамическое программирование и зачем его использовать. Я буду иллюстрировать эту концепцию конкретными примерами кода на JavaScript, однако вместо него может быть применен любой другой язык программирования. Давайте начнем!

Читать далее
Всего голосов 11: ↑4 и ↓7 -3
Просмотры 9.1K
Комментарии 6

Чтобы решать «нерешаемые» задачи, нужно знать алгоритмы

Блог компании Southbridge Алгоритмы *Карьера в IT-индустрии

Артем Мурадов — Senior Software Development Engineer в Amazon и автор курса «Алгоритмы: roadmap для работы и собеседований». Уже больше 14 лет он использует алгоритмы для решения рабочих задач и прохождения собеседований. С помощью алгоритмов он повышал производительность приложений, побеждал в спорах с коллегами и ускорял исследование ДНК. Даже попасть в Amazon ему помогло знание алгоритмов.

Мы пообщались с Артемом, чтобы узнать о его опыте. Он подробно рассказал, как изучал алгоритмы и как они помогали ему в работе.  

Читать далее
Всего голосов 42: ↑35 и ↓7 +28
Просмотры 11K
Комментарии 25

Логистика. Часть 4. Пришло ли время авиации измениться? Как научиться управлять ценой?

Алгоритмы *Математика *Разработка под e-commerce *Управление e-commerce *Транспорт
Для авиаотрасли 2020 год стал худшим за всю историю ее существования. Из-за COVID-19 более чем на половину сократилось воздушное сообщение, количество маршрутов и общая выручка. Черный лебедь в белой маске, так называют этот кризис. В очередной раз мир «вдруг» снова напомнил всем нам о своей сложности и непредсказуемости. Пожалуй, единственное, чем этот кризис отличается от всех предыдущих, так это растущей убежденностью в том, что мы больше не можем всецело полагаться на простые детерминированные модели. Безусловно, очень трудно учитывать случайность и неопределенность в своих планах и решениях, но только сумасшедший захочет еще раз проверить, во сколько нам обойдется очередное «Авось!»


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

Как найти плагиат в контестах по программированию

Блог компании Питерская Вышка Программирование *Алгоритмы *Учебный процесс в IT

Многие (особенно в постсоветских странах) относятся к списыванию довольно беззаботно. Ученики в школах, студенты в университетах, а затем и специалисты в своей работе заимствуют чужие идеи и решения, не чувствуя вины за обман. Между тем плагиат — это не безобидное «подумаешь, списал», а серьезная проблема, которая ведет к мошенничеству и коррупции [1, 2]. 

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

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

Программирование необычных шахмат

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

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

Однако очень многие шахматные программы работают со "стандартными" правилами шахмат и не могут работать при других правилах, хотя существуют сотни вариаций шахмат.

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

Я запрограммировал 15 шахматных вариаций - для каждой опишу неожиданные ходы и результаты партий компьютера друг с другом.

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

Том Сойер играет в сортировку (QuickSort)

Алгоритмы *

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

Друзья по играм: Бен, Билли, Том Миллер и другие, с интересом ждали правил игры, в которую Сойер превратит задание на этот раз. 

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

-- Пропади я пропадом, если не уберу подальше от улицы все кусты, что будут похуже этого!

Том в задумчивости осмотрел ряд таких же кустов.

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

-- Третий тоже повыше моего, оставим и его до срока.

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

-- Попался, оборванец! Что ж поделать, многоуважаемый недоросль, ваше место займёт более возвышенный кандидат!

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

Он схватил второй куст и перенёс его на пустующее место в ряду, возле своего образца.

Поднимая свой образец с земли, Том с жалостью сказал ему: -- Судя по всему, дружок,  тебе не украшать собой вход у калитки... Но пойдём дальше, поищем ещё кого-то похуже тебя.

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

Элементарный счет звездного года (365 дней и 369 минут [365.2524])в радиоактивном распаде

Python *Алгоритмы *Математика *
Recovery mode

Есть данные за 2 дня мая 2005 года 2 дня мая 2006 года. Цель найти в сумме 1440 сравнений[60*24] звездный год.

Читать далее
Всего голосов 13: ↑1 и ↓12 -11
Просмотры 1.6K
Комментарии 7

Приближение синуса и косинуса полиномом 2 степени

Алгоритмы *Математика *Программирование микроконтроллеров *

На сайте habr.com/ru уже были похожие публикации осенью 2021 года:

Как посчитать синус быстрее всех

Как посчитать синус быстро

Не на Habr Как сделать быструю функцию для вычисления синуса? топик начат в 2003 году последний отклик в 2020 году.

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

Читать далее
Всего голосов 9: ↑0 и ↓9 -9
Просмотры 2.2K
Комментарии 21

Анализ финансовых ботов, можно ли заработать?

Программирование *Алгоритмы *Машинное обучение *Финансы в IT

Разбираю разные подходы к созданию ботов и смотрю на их эффективность

Заработает ли бот достаточно денег?
Будет ли стабильный заработок?
Достигнет ли он когда-нибудь годового дохода в $100,000?

В этом посте я отвечу на эти вопросы и дам вам несколько советов, как двигаться дальше.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 8.2K
Комментарии 16

Темное искусство функциональной верификации цифровых микросхем

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

Сегодня, в субботу 26 февраля, на Сколковской Школе Синтеза Цифровых Схем Михаил Коробков проводит занятие по технологиям функциональной верификации: constrain solvers, cover bins и concurrent assertions. Примеры, которые мы подготовили для школы, вращаются вокруг протокола AXI для систем на кристалле, вопросы про который спрашивают например на интервью в хардверное отделение компании Meta и другие.

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

Суть деятельности Verification Engineer заключается в создание фреймворков, которые тестируют хардверные дизайны на прочность, посылая к ним псевдослучайные транзакции и учитывая покрытие интересных сценариев (functional coverage). Базовые элементы этих технологий должен знать и хороший RTL Design Engineer.

Приглашаем присоединяться к трансляции занятия на канале школы в YouTube, в субботу 26 февраля с 12.00 до 15.00:

Процесс верификации блока микросхемы:
Всего голосов 22: ↑16 и ↓6 +10
Просмотры 3.1K
Комментарии 7

Случайные лабиринты и сапёр от третьего лица, инопланетные жуки и алгоритм Брезенхема

Разработка игр *Алгоритмы *Дизайн игр *

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

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

Игра получилась на удивление играбельной, извините за тавтологию. Интересное сочетание экшена/аркады и паззла/адвенчуры. Разрешите рассказать вам о паре алгоритмических задач, возникших при генерации уровней. Сами алгоритмы простые. Однако интересно именно то, что их можно использовать в игре.

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

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

Оптический спидометр

Алгоритмы *Космонавтика Физика Лазеры

Измерение линейной скорости транспортных средств, оторванных от опоры и движущихся вдали от навигационных систем, является непростой задачей. Было бы здорово иметь прибор для измерения скорости, который может работать максимально независимо от места расположения и достаточно надежно. Можно ли создать такой спидометр, для работы которого было бы достаточно только светоносной среды и энергии? Похоже, что да. Для реализации этой идеи можно использовать электромагнитные волны (свет), и тот факт, что свет может увлекаться движущейся прозрачной средой.

Читать далее
Всего голосов 21: ↑6 и ↓15 -9
Просмотры 3.6K
Комментарии 39

Инженерный подход к тестированию алгоритмов: исследовательский анализ рабочего процесса. Часть 2

Блог компании OTUS Алгоритмы *

Как мы уже говорили в первой части, для демонстрации анализа алгоритма в более широком контексте примером послужит расстояние редактирования Левенштейна. Расстояние редактирования также иногда называют поиском похожих строк (или нечетким поиском). Это метрика редактирований (изменений символов), необходимых для преобразования одной строки в другую (целевую) строку. Из самых известных применений алгоритма можно выделить предоставление предложений по правильному написанию, нечеткий поиск по строке поискового запроса и сравнение последовательностей ДНК/РНК.

По сравнению с бинарным поиском, который построен вокруг одной операции поиска, классический алгоритм Левенштейна поддерживает три операции: вставить/insert, удалить/delete и заменить/substitute (символ в строке). Расстояние редактирования, которое он выдает, является минимальным количеством необходимых операций.

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

Стеганографические эксперименты с видеофайлами и Youtube

Работа с видео *Python *Алгоритмы *Обработка изображений *DIY или Сделай сам
Из песочницы

В один из вечеров у меня появились наукообразные вопросы. Можно ли «растворить» какой-либо видеофайл, разместив его в теле другого видеофайла так, чтобы при этом первый видеофайл можно было относительно легко и беспрепятственно достать обратно? Кроме того, чтобы не углубляться в математику проблемы, можно ли это желание реализовать своими силами за один вечер, предположим на языке Python без использования каких-либо сторонних стеганографических библиотек и иных специальных инструментов?

Узнать, как я ставил эксперименты
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 3.1K
Комментарии 6

Что считать счастьем покупателя?

Блог компании Яндекс Поисковые технологии *Алгоритмы *Разработка под e-commerce *

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

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

Человек может:

  • Формулировать требования к покупке по мере сравнения вариантов.

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

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

Мы работаем над улучшением поиска по товарам. Поэтому нам нужна была метрика, которая показывает удовлетворённость людей тем, что мы показываем на выдаче. Мы искали её в несколько итераций, и сейчас я хочу рассказать о том, что мы уже придумали.
Читать дальше →
Всего голосов 33: ↑31 и ↓2 +29
Просмотры 5.3K
Комментарии 28

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