Напишите метод, который будет подсчитывать количество цифр «2», используемых в записи чисел от 0 до n (включительно)

Как всегда, сначала мы попробуем решить задачу «в лоб».

Написание ИИ для хоккея. Часть 2

Прежде чем читать эту часть, советуем вам взглянуть на предыдущий урок. А в этой статье мы продолжим реализацию искусственного интеллекта для игры в хоккей с использованием «рулевого поведения» (steering behaviors)…

Написание ИИ для хоккея. Часть 1

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

Обложка поста

Опишите алгоритм для нахождения миллиона наименьших чисел в наборе из миллиарда чисел. Память компьютера позволяет хранить весь миллиард чисел

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

Обложка поста

Оптимизация алгоритмов оптимизации

Один из способов решить сложную проблему оптимизации — сначала свести её к соответствующей, но более простой задаче, а затем постепенно увеличивать сложность, каждый раз решая новую проблему, и, в свою…

Обложка поста

Никаких симуляторов. Рассказ о платформе для удалённого обучения программированию в реальном окружении

Хекслет — это платформа для создания практических уроков по программированию в настоящей среде разработки. Главное отличие от других проектов в том, что на Хекслете нет симуляторов: в каждом уроке пользователь работает…

Обложка поста

Десять наиболее частых ошибок программистов при подготовке к собеседованию

Автор этих советов, Гейл Лакман Макдауэлл — основатель и CEO CareerCup, автор известных книг по подготовке к собеседованиям. Гейл работала программистом в Microsoft, Apple и Google. У неё есть степени…

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

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

Искусство упаковки структур в C

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

Обложка поста
Обложка поста

Ответы Джеймса Боттомли на вопросы подписчиков Типичного программиста

Недавно мы публиковали интервью с Джеймсом Боттомли, техническим директором продуктов серверной виртуализации Parallels и членом совета директоров Linux Foundation. Джеймс согласился ответить на несколько дополнительных вопросов от подписчиков Типичного программиста.

Как далеко вы сможете доставить груз на N грузовиках

У вас есть парк из 50 грузовиков. Каждый из них полностью заправлен и может проехать 100 км. Как далеко с их помощью вы можете доставить определенный груз? Что будет, если…

Обложка поста
Обложка поста

Самоизменяющаяся программа на C под x86_64

Зачем вообще может понадобиться писать программу, которая меняет свой код во время выполнения? Это ужасно! Да, да, я знаю. И все-таки, зачем? Ну, например, это хороший учебный пример. Но главная…

Не-жадный алгоритм

В настоящее время существуют методы справедливого совместного использования ресурсов, на основе системы распределения. Наиболее известным является метод деления торта «Ты отрезаешь, я выбираю». Есть также алгоритмы, которые позволяют разделить торт…

Пять лучших блогов по программированию 2014 года

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

Не комментируйте свой код — перепишите его

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

Обложка поста

Напишите функцию суммирования двух целых чисел без использования «+» и других арифметических операторов

Первое, что приходит в голову, — обработка битов. Почему? У нас нет выбора — нельзя использовать оператор «+». Так что будем суммировать числа так, как это делают компьютеры!

Обложка поста

Вероятность встретить машину на пустынном шоссе

На пустынном шоссе вероятность появления автомобиля за 30-минутный период составляет 0.95. Какова вероятность его появления за 10 минут? Это вопрос труден только потому, что та информация, которую вы получили, не…

В чем разница между потоком и процессом?

Процессы и потоки связаны друг с другом, но при этом имеют существенные различия. Процесс — экземпляр программы во время выполнения, независимый объект, которому выделены системные ресурсы (например, процессорное время и…

Обложка поста

Проклятие неинициализированных переменных

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

Алгоритм поиска элемента в отсортированной матрице размером MxN

Под отсортированной матрицей будем понимать такую матрицу, строки и столбцы которой отсортированы. Чтобы найти нужный элемент, можно воспользоваться бинарным поиском по каждой строке. Алгоритм потребует O(M log(N)) времени, так как необходимо…

Обложка поста

Значение ключевого слова volatile в C

Ключевое слово volatile информирует компилятор, что значение переменной может меняться извне. Это может произойти под управлением операционной системы, аппаратных средств или другого потока. Поскольку значение может измениться, компилятор каждый раз…

Обложка поста

Песочница для молодых сайтов. Как быстрее повзрослеть

Наверняка многие из web-разработчиков удивлялись, почему их любимый сайт, который они делали несколько месяцев и наполняли уникальным контентом, не появляется в поисковой выдаче? Ведь тут статей хоть пруд пруди, функционал…

Логическая задача на измерение высоты разбивания яйца

Дано 100-этажное здание. Если яйцо сбросить с высоты N-го этажа (или с большей высоты), оно разобьется. У вас есть два яйца. Найдите минимальное N.

Обложка поста

Куайны (бесполезная программа в программе)

Куайн (от анг. quine) — программа, результатом работы которой является собственный исходный код. Сразу оговоримся: программы, которые обращаются к файлам или производят считывание с клавиатуры куайнами не являются. Более серьезное…

Объясните, что делает код ((n & (n – 1)) == 0)

Вернемся к «истокам». Что означает A & B == 0? Это означает, что А и B не содержат на одних и тех же позициях единичных битов. Если n & (n…

Обложка поста
Обложка поста

Интервью с Джеймсом Боттомли, техническим директором продуктов серверной виртуализации Parallels и членом совета директоров Linux Foundation

Типичный: Давайте начнем с самого начала: что такое Linux-сообщество сегодня? Какие люди там работают, и на какие категории их можно разделить? Джеймс Боттомли: Linux-сообщество сегодня, спустя 23 года после своего…

Найдите ошибки в следующем коде

Дан код: unsigned int i; for (i = 100; i >= 0; –i) printf(“%d\n”, i); В коде есть две ошибки.

Обложка поста

Dead beef

Что означает Dead beef? Dead beef является формой записи некоторых слов. При отладке компьютерных программ содержание памяти должно отображаться на экране (или, как это было в давние времена, на бумаге).

Обложка поста

Обычно main — это функция. Но всегда ли это так?

Идея написать эту статью пришла мне в голову, когда одного из моих коллег заставили пройти начальный курс по CS в моем университете. Мы с ним искали способ написать корректную программу…

Обложка поста

Какие ошибки могут вызывать падение приложения, написанного на C

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

Обложка поста

Предъявите ваши аргументы

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

Раскраска диска для определения направления его вращения

Представьте себе вращающийся диск, например DVD. У вас есть в распоряжении черная (Ч) и белая (Б) краски. На краю диска установлен небольшой датчик, который определяет цвет под ним и выдает…

Обложка поста