Рубрика «алгоритм» - 10

После того, как вроде бы неплохой результат, полученный в предыдущей части, оказался лишь «локальным максимумом», я на некоторое время забросил задачку. Напомню условие:

«The decimal number 585 is 1001001001 in binary. It is palindromic in both bases. Find n-th palindromic number». Или, по-русски: «Десятичное число 585 в двоичной системе счисления выглядит как 1001001001. Оно является палиндромом в обеих системах счисления. Найдите n-й подобный палиндром».

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

В конце концов, алгоритм оказался не таким уж и сложным, зато, на мой взгляд, очень красивым.
Читать полностью »

В различного рода сложности реализуемых алгоритмов при программировании МК, всегда возникают рутинные циклические и не очень задачи. Одни требуют повышенной точности, другие таким критерием не обязаны обладать. Аппаратных таймеров на борту МК может быть приличное количество, например STM32F4 — аж 14 штук, и это не считая SysTick (системного), а в других и пара тройка за счастье: тот же PIC16, например.

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

Введение

Pathfinder — это визуальный язык для генерации хореографии.

Генеративные решения в области искусств имеют долгую историю. Решения, использующие компьютер, открывают новые перспективы и поднимают новые вопросы в отношении произведения, вовлечённости и экспрессии. В особенности это относится к музыке и изобразительному искусству. Сейчас работа с танцем и прочими движениями пока ещё пребывает в самом начальном состоянии и, как правило, сводится к алгоритмам оцифровки и визуализации движений тел. Такой подход даёт новаторские выступления, предлагая новые способы восприятия танца. Однако, взгляд на алгоритмы лишь как на способ измерения и преобразования не отражает современную роль алгоритмов в художественном исследовании и генеративном дизайне.
Читать полностью »

Как адаптировать ссылочную массу под алгоритм Яндекса «Минусинск» - 1С момента запуска нового алгоритма Яндекса — Минусинска прошло 3 месяца. За это время прошло несколько итераций алгоритма, а значит можно сделать первые выводы о его работе. Из этой статьи вы узнаете как адаптировать свою ссылочную массу под новый алгоритм Яндекса и как использовать возможности алгоритма в свою пользу.

Стоит напомнить основную особенность нового алгоритма. Минусинск направлен на мотивацию веб-мастеров, SEO специолистов, а также владельцев сайтов на отказ от использования SEO ссылок для продвижения сайтов. Особенностью данного алгоритма является то, что он работает не единомоментно, а последовательно, итерациями. То есть алгоритм носит ручной характер работы. Яндекс включает его в определенный момент и устанавливаем определенные настройки, например, указывает какие тематики, какие регионы будут наказаны после данной итерации. А уже сам алгоритм отбирает сайты с учетом указанных параметров и накладывает на них фильтр. Особо ярких представителей Яндекс наверняка наказывает вручную.
Читать полностью »

Ежегодно Яндекс волнует SEO-сообщество нововведениями в поисковой выдаче, заставляя активнее работать мозги аналитиков. Уже ужесточал оценку качества ссылочной массы, делая упор на поведенческие факторы. Попытка сделать поисковую выдачу более естественной была давно, но активные действия Яндекс начал предпринимать, когда анонсировал бесссылочное ранжирование 5 декабря 2013 года.

В качестве эксперимента это произошло в Москве и только для коммерческих запросов. Первый этап запустили 14 марта 2014 года и повлиял этот алгоритм только на тематики «Туризм», «Недвижимость» и «Электроника и бытовая техника». Это стало звоночком, что шутки кончились и теперь все по-взрослому. Для тех, кто не понял серьезности намерения Яндекса было лето 2014, когда произошло изменение классификатора поисковых запросов, расширился список тематик коммерческих запросов, где была отключена ссылочная масса и изменена формула текстового ранжирования опять же по коммерческим запросам.

С этим нововведением топовые компании уступили свои позиции новичкам. И только все научились жить в новом миропорядке, как Яндекс анонсировал и ввел алгоритм «Минусинск».
Читать полностью »

Алгоритм Брезенхема в паяльной печи — теория - 1 Алгоритм Брезенхема является одним из старейших алгоритмов в машинной графике. Казалось бы, как можно применить алгоритм построения растровых прямых при создании домашней паяльной печи? Оказывается можно, причем с очень достойным результатом. Забегая вперед, скажу, что данный алгоритм очень хорошо скармливается маломощному 8-битному микроконтроллеру. Но обо всем по порядку.
Читать полностью »

В этой статье пойдёт речь о том, как реализован словарь в Python. Я постараюсь ответить на вопрос, почему элементы словаря не упорядочены, описать, каким образом словари хранят, добавляют и удаляют свои элементы. Надеюсь, что статья будет полезна не только людям, изучающим Python, но и всем, кто интересуется внутренним устройством и организацией структур данных.
Читать полностью »

Доброго времени суток!

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

В интернете много решений, но все не то, или не так. Или без формул, или без переменных или простейшие возможности типа «1+(2-3)/4». Зато большинство ответов были в сторону лексического анализа и обратной польской нотации. Вот их я и применил, взяв примеры с разных источников.

Сначала разберем лексический анализ. Потому что простой анализ формулы по символам с поиском в ней функций, операторов, переменных и прочего получился бы крайне нечитабельный.

Реализацию алгоритмов можно взять в интернете и подредактировать под свои нужды.

Для лексического анализа внес небольшие изменения:

  • загрузка списка переменных. В конструкторе происходит замена переменных их значениями;
  • замена разделителей целой-дробной части числа на тот что используется в системе;
  • добавил унарный минус;
  • удалил лишние для меня лексемы.

Вот что получилось. Ниже будет ссылка на исходники.
Читать полностью »

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

Итак, будем пытаться написать его самостоятельно, а для этого нужно продумать, как он должен работать. Для этого возьмём достаточно легкую задачу:
Читать полностью »

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

Что из этого получилось приглашаю начинающих программистов почитать, а опытных обсудить. Для меня самого финал был неожиданным.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js