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

Пользователь

Отправить сообщение

Яндекс.Блиц. 12 алгоритмических задач отборочного раунда и их разборы

Время на прочтение18 мин
Количество просмотров116K

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


В Блице можно использовать Java, C++, C# или Python. Кроме того, участие в контесте дает возможность проверить свои знания. Если в итоге вы понимаете, что их стоит подтянуть, — это тоже результат. Кстати, тогда вам может пригодиться специализация на курсере «Алгоритмы и структуры данных», в создании которой Яндекс участвовал.


image


Давайте теперь разберем задачи, которые предлагались в отборочном раунде. У нас было несколько одинаковых по сложности вариантов, каждый из которых содержал по шесть задач. Мы разберем один набор задач полностью, а также наиболее интересные задачи из других наборов. К слову, из 1762 участников квалификационного раунда в финал прошли лишь 263. Так что задачи оказались не самыми простыми.

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

Избегание ада с помощью монад

Время на прочтение4 мин
Количество просмотров14K

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


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


Ад проверки на null


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


Такие функции обычно приводят в глубоко вложенному и сложно читаемому коду с чрезмерным количеством синтаксического шума.


var a = getData();
if (a != null) {
  var b = getMoreData(a);
  if (b != null) {
     var c = getMoreData(b);
     if (c != null) {
        var d = getEvenMoreData(a, c)
        if (d != null) {
          print(d);
        }
     }
  }
}
Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии21

Виртуальность и оверхед

Время на прочтение6 мин
Количество просмотров6.6K
Я думаю, все знают, что такое наследование или хотя бы слышали о нём. Часто мы используем наследование ради полиморфного поведения объектов. Но задумываемся ли мы о той цене, которую приходится платить за виртуальность? Поставлю вопрос по-другому: каждый ли знает эту цену? Давайте попробуем разобраться в этой проблеме.

Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии9

Шаблоны проектирования с человеческим лицом

Время на прочтение32 мин
Количество просмотров510K

image


Шаблоны проектирования — это способ решения периодически возникающих проблем. Точнее, это руководства по решению конкретных проблем. Это не классы, пакеты или библиотеки, которые вы можете вставить в своё приложение и ожидать волшебства.


Как сказано в Википедии:


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

image Будьте осторожны


  • Шаблоны проектирования — не «серебряная пуля».
  • Не пытайтесь внедрять их принудительно, последствия могут быть негативными. Помните, что шаблоны — это способы решения, а не поиска проблем. Так что не перемудрите.
  • Если применять их правильно и в нужных местах, они могут оказаться спасением. В противном случае у вас будет ещё больше проблем.

В статье приведены примеры на PHP 7, но пусть вас это не смущает, ведь заложенные в шаблонах принципы неизменны. Кроме того, внедряется поддержка других языков.

Читать дальше →
Всего голосов 148: ↑134 и ↓14+120
Комментарии98

Рабочий дневник программиста

Время на прочтение6 мин
Количество просмотров54K

boat_journal
wikipedia.org


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

Читать дальше →
Всего голосов 37: ↑31 и ↓6+25
Комментарии90

От моноидов к алгебрам де Моргана. Строим абстракции на Haskell

Время на прочтение14 мин
Количество просмотров13K

Что общего у нормального распределения, конечных автоматов, хеш-таблиц, произвольных предикатов, строк, выпуклых оболочек, афинных преобразований, файлов конфигураций и стилей CSS? А что объединяет целые числа, типы в Haskell, произвольные графы, альтернативные функторы, матрицы, регулярные выражения и статистические выборки? Наконец, можно ли как-то связать между собой булеву алгебру, электрические цепи, прямоугольные таблицы, теплоизоляцию труб или зданий и изображения на плоскости? На эти вопросы есть два важных ответа: 1) со всеми этими объектами работают программисты, 2) эти объекты имеют сходную алгебраическую структуру: первые являются моноидами, вторые — полукольцами, третьи — алгебрами де Моргана.

Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии12

Как использовать PVS-Studio бесплатно

Время на прочтение6 мин
Количество просмотров48K
PVS-Studio FreeМы хотим помочь миру программного обеспечения лучше познакомиться с инструментами статического анализа кода и повысить качество программного обеспечения. Мы предоставляем возможность бесплатного использования анализатора PVS-Studio студентам в учебных целях, индивидуальным разработчикам и коллективам энтузиастов.

Введение


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

Думаю, что наш провал с CppCat был предопределён. Мир диктует свои законы, и, например, тот же Coverity ориентирован на корпоративные лицензии. Однако, это не значит, что нужно исключать другие варианты взаимодействия с миром.

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

Стоит пояснить нашу позицию. Впрочем, если вам не терпится, вы можете сразу перейти к разделу «Бесплатная лицензия PVS-Studio». Если же читателю интересно узнать подробности, то предлагаю продолжить чтение.
Читать дальше →
Всего голосов 150: ↑138 и ↓12+126
Комментарии669

Большая Перекачка, или Вперед к кайнозою

Время на прочтение5 мин
Количество просмотров43K
80 млн. лет назад, на рубеже мезозоя и кайнозоя, Земля находилась с одном из благоприятнейших своих состояний — широты Сибири и Аляски входили в субтропическую зону, арктические острова и Антарктида были покрыты лесами. Все что нужно, чтобы вернуться к этому состоянию — восстановить кайнозойский водообмен полярного бассейна с экваториальными морями.

Для реализации своего плана автор (инженер Петр Борисов) в 1960-х годах предложил построить поперек Берингова пролива плотину.

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

Недосказанное о возможностях Telegram каналов

Время на прочтение4 мин
Количество просмотров16K


База активных пользователей Telegram свыше 100 млн. в месяц. Ежедневно сервис пополняют еще 350 тысяч новых пользователей. Большая часть из них приходится на Иран, Саудовскую Аравию, ОАЭ, Индию, Бразилию и Италию. Тем не менее согласно данным TNS Russia, Telegram c долей в 15% является четвертым по полярности мессенджером в России.

Специфика


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

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

Проект «Око» ч.12

Время на прочтение13 мин
Количество просмотров16K

Фото: A.V. Photography

Ссылки на предыдущие части и обращение к тем, кто видит публикации Ока впервые:
Око — мой личный литературный проект, работу над которым я начал в мае этого года. Из небольшой зарисовки он перерос в научно-фантастическое произведение, главы которого я выкладываю, по мере написания, на GT.

Предыдущие части:

Часть 1
Часть 2
Часть 3
Часть 4
Часть 5
Часть 6
Часть 7
Часть 8
Часть 9
Часть 10
Часть 11



В части №11:

— Знаешь, Оливер Стил, — подала голос Мелисса, — сейчас я по-настоящему рада тому, что оказалась с тобой по одну сторону баррикад.

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

— Да, давайте собираться, поговорим в другом месте, — сказал Мэтт, — войска знают, где мы?

— Да, — ответила Мелисса, — у одного из бойцов был с собой маяк и рация.

— Когда плановый выход на связь с центром?

— На рассвете.

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

Читать дальше →
Всего голосов 21: ↑15 и ↓6+9
Комментарии4

Компактный сервер для Django приложений

Время на прочтение7 мин
Количество просмотров25K

Введение


Многие начинающие веб разработчики размышляют о том, где бы разместить свое творение. Обычно для этих целей применяются машины под управлением *NIX подобных систем. Мой выбор остановился на Raspberry PI, поскольку малинка:
  • работает под управлением полноценного Linux,
  • долгое время лежит на столе и пылится.

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

image
Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии17
2

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность