Измерение времени выполнения отдельных фрагментов кода

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

Читать далее

И снова перегрузка операторов

Казалось бы в одной из статей мы уже расставили все точки над “ё”, однако, не тут было, так как к нам пришла внезапная идея…

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

Читать далее

Поиск уникальных элементов в массиве

Довольно часто встречается задача поиска уникальных элементов в массивах или каких-то иных последовательностях данных со схожим интерфейсом доступа и казалось бы тут не должно быть проблем, особенно, если учесть тот факт, что в Phobos в модуле std.algorithm есть такая замечательная вещь, как uniq, но… Читать далее

Преобразования цвета в DFL

В одном из проектов для D Form Library я столкнулся с небольшой проблемкой: необходимо было сделать рисунок в окне, но с использованием окраски «в старом стиле» (т.е. использовать не палитру RGB, а иную, более упрощенную, с меньшим количеством параметров). Это была даже не задача, поскольку думать пришлось совсем немного, однако, недостаточное количество информации чуть не погубило задумку проекта – требовалось нарисовать двумерное изображение с использованием палитры в 256 цветов (она же, если не ошибаюсь, BGR), но DFL позволяет рисовать в окне с использованием палитры RGB и описания механизма преобразования RGB в BGR почти отсутствуют… Читать далее

Превращение набора данных в строку

Программисты на Python знают, что у строк в этом замечательном языке программирования есть интересный метод join, который, если мне не изменяет память, получая на вход список данных и разделитель, склеивает эти данные, объединяя их через переданный разделитель. Однако, поиски по стандартной библиотеке D не позволили найти аналог для такого метода (хотя возможно, я плохо искал) – и пришлось выкручиваться самому, ведь мне очень нужна функция, похожая по поведению на метод join. Читать далее

Удобное создание свойств в классах и структурах

В этой статье покажу Вам небольшой “трюк” для вставки свойств в классы и структуры.

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

Различные алгоритмы сортировки

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

Читать далее

Вычисление числа Пи методом “краника”

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

Читать далее