Рубрика «c++» - 144

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

Разработка мобильной 2D-игры «Составь слова из слова» - 1

Работа со словарями

Имея некоторый опыт работы с БД Oracle, решил что обработку словарей буду вести в ней (Oracle 11.2 XE). Накачал в интернете несколько словарей в виде текстовых файлов с разделителями и с помощью механизма External Table загрузил в БД. Из загруженных слов отобрал 700 существительных длиной 8-10 букв. Это как раз и будут те слова, из букв которых игроки будут вести составление. Далее необходимо для каждого из этих 700 слов подобрать набор слов, которые можно из него составить. Для этого нужно проиндексировать все слова, чтобы можно было делать поиск по вхождению букв.

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

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

image

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

Как говорил Готфрид Вильгельм Лейбниц, 11010000 10010100 11010001 10000000 11010001 10000011 11010000 10110111 11010001 10001100 11010001 10001111 00101100 00100000 11010001 10000001 00100000 11010000 10110100 11010000 10111101 11010000 10110101 11010000 10111100 00100000 11010000 10111111 11010001 10000000 11010000 10111110 11010000 10110011 11010001 10000000 11010000 10110000 11010000 10111100 11010000 10111100 11010000 10111000 11010001 10000001 11010001 10000010 11010000 10110000 00100001 00100000 00111010 00101001!

С днем программиста, или 10 фактов о С++++ - 1
Читать полностью »

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

В данной статье я хотел бы рассказать о такой структуре данных как стек. Стек представляет собой одну из базовых структур данных и работает по системе LIFO (Last In First Out). Представить стек можно в виде стакана или стопки книг. Таким образом книга, положенная последней, будет взята первой и наоборот, первая положенная книга будет взята в самом конце.
Читать полностью »

Плохой программист Джон сделал ошибку в коде, из-за которой каждый пользователь программы был вынужден потратить в среднем 15 минут времени на поиск обхода возникшей проблемы. Пользователей было 10 миллионов. Всего впустую потрачено 150 миллионов минут = 2.5 миллиона часов. Если человек спит 8 часов в сутки, то на сознательную деятельность у него остается 16 часов. То есть Джон уничтожил 156250 человеко-дней ≈ 427.8 человеко-лет. Средний мужчина живет 64 года, значит Джон убил примерно 6 целых 68 сотых человека.

Как тебе спится, Джон — серийный программист?

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

Правила хорошего кода

Простота-понятность-компактность, производительность, отсутствие дублирования.

Если вы пишете что-то сложнее «hello world”, оно будет размещаться не в одном, а в нескольких файлах. Как правило, файлов бывает больше десятка. Всем им даются непонятные короткие имена (программисты любят сокращения) Человек, который попытается разобраться в вашем коде, будет плеваться, шипеть и проклинать вас. Ваша карма будет испорчена и следующие несколько жизней вы будете собакой в Корее.
Читать полностью »

Доброго всем времени суток, уважаемые посетители сайта Хабрахабр. В данной статье я бы хотел рассказать вам о том, что такое диаграмма Вороного (изображена на картинке ниже), о различных алгоритмах её построения (за Диаграмма Вороного и её применения - 1, Диаграмма Вороного и её применения - 2 — пересечение полуплоскостей, Диаграмма Вороного и её применения - 3 — алгоритм Форчуна) и некоторых тонкостях реализации (на языке C++).

Диаграмма Вороного и её применения - 4

Также будет рассмотрено много интересных применений диаграммы и несколько любопытных фактов о ней. Будет интересно!
Читать полностью »

Асинхронная (и не очень) загрузка данных в Unreal Engine 4 - 1

Содержание:

Всем привет!

Сегодня я расскажу о том, как обращаться с ассетами на Unreal Engine 4 так, чтобы не было мучительно больно за бесцельно занятую память и стоны игроков за время загрузки вашей игры.
Читать полностью »

При написании алгоритмов зачастую возникает ситуация, когда какая-то функция нуждается в вызове с тем же количеством аргументов, но с не совпадающими типами. Решаем.
Читать полностью »

GCCЯ регулярно проверяю различные открытые проекты, чтобы продемонстрировать возможности статического анализатора кода PVS-Studio (C, C++, C#). Настало время компилятора GCC. Бесспорно, GCC — это очень качественный и оттестированный проект, поэтому найти в нём хотя бы несколько ошибок уже большое достижение для любого инструмента. К моей радости, PVS-Studio справился с этой задачей. Никто не застрахован от опечаток и невнимательности. Именно поэтому PVS-Studio может стать вашей дополнительной линией обороны на фронте бесконечной войны с багами.
Читать полностью »

Доброго времени суток, уважаемые читатели !

Когда я только начал свой путь по изучению C++, у меня возникало много вопросов, на которые, порой, не удавалось быстро найти ответов. Не стала исключением и такая тема как перегрузка операторов. Теперь, когда я разобрался в этой теме, я хочу помочь другим расставить все точки над i.

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


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