Картинка поста

Дана шахматная доска размером 8×8, из которой были вырезаны два противоположных по диагонали угла, и 31 кость домино; каждая кость домино может закрыть два квадратика на поле. Можно ли вымостить...
Читать дальше

Картинка поста

“Когда я писал этот код, только Бог и я понимали, что он означает. Теперь понимает только Бог.” По поводу авторства этой цитаты проводилось целое расследование. “Посвящаю этот код и всю мою...
Читать дальше

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

8cc — это компилятор для языка С. Он поддерживает все особенности С11 и вместе с тем его код настолько небольшой и простой, насколько это возможно. Исходный код есть на GitHub, или...
Читать дальше

Картинка поста

Евгений Брикман – ведущий разработчик Play Framework для LinkedIn сказал в видео-презентации, записанной на JaxConf 2013, что большие кодовые базы труднее поддерживать, если они написаны на динамических языках. На одном...
Читать дальше

8 вариантов провести месяц с пользой и встать на путь к своему будущему Месяц программирования принесёт огромную пользу независимо от того, какой язык выбрать. Но с учётом ваших интересов, попробуйте один из следующих:...
Читать дальше

Картинка поста

Допустим, вы пишете конвейер, в котором 2 потока, используя общий буфер, обрабатывают данные. Поток-producer эти данные создает, а поток-consumer их обрабатывает (Producer–consumer problem). Следующий код представляет собой самую простую модель:...
Читать дальше

Картинка поста

Да, мы знаем, на что это похоже, но сейчас мы расскажем вам, как «ускорить Интернет». В некоторых случаях скорость ответа DNS-серверов может значительно влиять на время загрузки страниц. Дело в...
Читать дальше

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

Команда echo в Unix предназначена для отображения строки текста. Она просто выводит текст на стандартное устройство вывода. Далее представлена небольшая подборка реализаций этой команды на языке С в различных ОС....
Читать дальше

Картинка поста

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

Картинка поста

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

Картинка поста

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


Виртуальная функция определяется vtable (виртуальной таблицей). Если какая-либо функция класса объявлена как виртуальная, создастся vtable, которая хранит адреса виртуальных функций этого класса. Для всех таких классов компилятор добавляет скрытую переменную...
Читать дальше

Картинка поста

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

Картинка поста

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

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

Картинка поста

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

Картинка поста

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

Картинка поста

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

Картинка поста

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

Картинка поста

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

Картинка поста

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

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

Картинка поста

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


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

Картинка поста

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

Самый распространенный вариант реализации функции max — проверка знака выражения a – b. В этом случае мы не можем использовать оператор сравнения, но можем использовать умножение....
Читать дальше

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

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

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

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

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

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