Рубрика «Алгоритмы» - 42

Развитие беспилотных технологий на железной дороге началось достаточно давно, уже в 1957 году, когда был создан первый экспериментальный комплекс автоведения для пригородных поездов. Для понимания разницы между уровнями автоматизации для железнодорожного транспорта введена градация, определенная в стандарте МЭК-62290-1. В отличие от автомобильного транспорта железнодорожный имеет 4 степени автоматизации, показанные на рисунке 1.

image

Рисунок 1. Степени автоматизации в соответствии с МЭК-62290

Практически все поезда, эксплуатирующие на сети ОАО «РЖД» оснащены устройством безопасности, соответствующему уровню автоматизации 1. Поезда с уровнем автоматиазции 2 уже более 20 лет успешно эксплуатируются на сети российских железных дорог, оснащено несколько тысяч локомотивов. Данный уровень реализуется за счет алгоритмов управления тягой и торможения энергооптимального ведения поезда по заданному маршруту с учетом расписания и показаний систем автоматической локомотивной сигнализации, принимаемых по индуктивному каналу с рельсовых цепей. Применение 2 уровня понижает утомляемость машиниста и дает выигрыш по энергопотреблению и точности исполнения графика движения.

Уровень 3 предполагает возможное отсутствие машиниста в кабине, что требует внедрения системы технического зрения.

Уровень 4 предполагает полное отсутствие машиниста на борту, что требует существенного изменения конструкции локомотива (электропоезда). Например, на борту установлены автоматические выключатели, которые будет невозможно взвести снова при их срабатывании без присутствия человека на борту.
Читать полностью »

Компания SpaceX, основанная небезызвестным Илоном Маском, выпустила симулятор ручной стыковки корабля Crew Dragon с МКС. Если все пойдет по плану, стыковку проведут 27 мая 2020 года. Она будет проходить в полностью автоматическом режиме, но экипаж корабля сможет переключиться на ручное управление. Собственно, именно ручной режим и воспроизведен в симуляторе.

Сам симулятор расположен на сайте и представляет собой, довольно проблематичную, на первый взгряд игрушку…

Космический челнок так и норовит улететь не туда… А точность с которой нужно попасть в шлюз составляет 20 см… по трем осям, а также по угловой скорости, скорости смещения и т.д.

Во мне заиграли патриотичные чувства и как-то стало обидно, за бывшую космическую державу, и я принял этот симулятор как вызов. Раз Маск решил показать сложность стыковки, и какие сложности их инженеры проходили, чтобы сделать программу автоматической стыковки, я решил написать, в свободное от работы время, программу на JavaScript, которая с легкостью состыкует Dragon и МКС в этом симуляторе.

Как тебе такое, Илон Маск?

image
Курение вредит вашему здоровью
Читать полностью »

Стояла как-то задача оснастить одну систему кучей термодатчиков. Причём оснастить максимально недорого.

Результаты изысканий (которые, по-моему, получились довольно изящными) предлагаю к рассмотрению в этой статье.

Измеряем температуру без АЦП - 1

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

Читать полностью »

Расшифровываем PDF417 без подсказок - 1

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

Сегодня я хочу рассказать о коде, который регулярно можно увидеть в аэропортах, а если точнее — на посадочных талонах. Герой этой истории — код PDF417. Давайте посмотрим, можно ли расшифровать такой код вручную и без подсказок? Какой информацией нужно обладать для этого? Сколько на это понадобится времени? Всё это и множество другого ждёт вас в данной публикации. Начнём!

Внимание, под катом — 30 изображений общим размером в 16.3 МБ.

Читать полностью »

image

Усталость

Смотрю в код и совершенно не понимаю, что он делает. Мысли путаются, вижу знакомый синтаксис и набор конструкций, но информация на экране монитора абсолютно не несет для меня никакой смысловой нагрузки. Читаю код построчно, делаю даже пометки в черновике, пытаясь понять алгоритм, но вскоре все сваливается в бессмысленную кашу. Слишком мало кофе или слишком много? Последнее время у меня к нему выработался иммунитет. Выпиваю его словно воду и кажется, что эффект нулевой, но без него никак. Дедлайн наступает на пятки. Руководство дает о себе знать все чаще. Еще один сорванный дедлайн и, пожалуй, мне предложат искать новую работу. От психологического давления и ограниченных сроков исправлять баги становится только тяжелее. Как же много багов и легаси кода, пытаюсь разложить по полками и размотать этот клубок, но все тщетно.

Я слишком глуп для этой работы. Может сказывается отсутствие математической базы? Или может просто нет таланта. Наверное, у меня другой склад ума. Смотрю по сторонам и вижу беззаботный смех моих коллег, кажется, что им дается все намного легче. Код на кончиках пальцев. У меня все не так. Хотя это пройдет, я точно это знаю. Как только я закрою этот проект, появится легкое чувство эйфории, так бывает всегда. А потом, снова окунувшись в очередное болото программного кода, ты теряешь веру в себя. Это “колесо сансары” и я из него не выйду никогда.
Читать полностью »

Сортировка слабой кучей - 1


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

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

Транслитерация

Транслитерация — это запись кириллических слов латиницей (Анна → Anna, Самара → Samara). Её используют в загранпаспортах, водительских удостоверениях, трансграничной доставке, библиотечных каталогах и множестве других международных процессов.

Так вышло, что я недавно окунулся в эту тему, а в Википедии она раскрыта слабо. Поэтому расскажу, что к чему (спойлер — если вы думаете, что с транслитерацией всё плохо, то на самом деле всё ещё хуже).

И конечно, поскольку это Хабр — предложу open-source библиотеки для решения проблемы.

Читать полностью »

Подготовка к собеседованиям в IT-гиганты: как я преодолела проклятье алгоритмического собеседования - 1

Дисклеймер:

Я не программирую с трёх лет, не знаю наизусть Кнута, не являюсь призёром олимпиад по информатике и чемпионатов по спортивному программированию, не училась в MIT. У меня за плечами образование по информатике и 6 лет опыта в коммерческой разработке. И до недавнего времени я не могла пройти дальше первого технического скрининга в IT-гиганты из FAANG (Facebook, Amazon, Apple, Netflix, Google и подобные), хотя предпринимала несколько попыток. 

Но теперь всё изменилось, я получила несколько офферов и хочу поделиться опытом, как можно к этому прийти. Речь пойдёт о позиции Software Engineer в европейских офисах перечисленных компаний.
Читать полностью »

Всем давно известно, что на видеокартах можно не только в игрушки играть, но и выполнять вещи, никак не связанные с играми, например, нейронную сеть обучить, криптовалюту помайнить или же научные расчеты выполнить. Как так получилось, можно прочитать тут, а я хотел затронуть тему того, почему GPU может быть вообще интересен рядовому программисту (не связанному с GameDev), как подступиться к разработке на GPU, не тратя на это много времени, принять решение, нужно ли вообще в эту сторону смотреть, и «прикинуть на пальцах», какой профит можно получить. 

Вычисления на GPU – зачем, когда и как. Плюс немного тестов - 1

Читать полностью »

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

Какие алгоритмы разработчики Яндекса реализовывают каждый день - 1

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

В статье четыре примера. Два на C++, один на TypeScript и один на Python. Способность быстро писать относительно простые алгоритмы без багов — общая необходимость, она не зависит от специализации разработчика.

Читать полностью »


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