Возведение в степень без циклов и условий

А что, если в D можно возвести в степень не пользуясь циклами и условиями? Конечно, тут я должен сказать, что возвести получиться только в целую неотрицательную степень, но все же это возможно…

Читать далее →

Подробнее

Реализация односвязного списка

Односвязный список – такая структура данных, в которой каждый элемент (узел) хранит информацию, а также ссылку на следующий элемент. Последний элемент списка ссылается на NULL. Сегодня мы реализуем его на D. Рассказ о структуре мы опустим, если у вас появится желание тщательно разобраться в ней, то добро пожаловать в поисковые системы, ну или можете посмотреть, например, тут: реализация односвязного списка на Си.

Читать далее →

Подробнее

Обработка изображений: цифровые фильтры

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

Подробнее

Пример реализации стека и очереди

Стек — это упорядоченная коллекция элементов, добавление нового или удаление существующего элемента которой всегда происходит только с одного из её концов. Элемент, добавленный последним, будет удалён в первую очередь, а элемент, добавленный первым, в последнюю. Такой принцип организации называется «последним вошел — первым вышел» (Last-In-First-Out или LIFO).

Очередь очень похожа на стек, но, в отличие от него, элементы кладутся и забираются с разных концов. Этот принцип называется «первым вошел — первым вышел» (First-In-First-Out или FIFO). Это работает как реальная очередь или конвейер, то есть, элемент, попавший в очередь первым, первым же её и покинет.

Читать далее →

Подробнее

Обработка файлов журналов с помощью D (часть II)

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

Читать далее →

Подробнее

Простая реализация алгоритма шифрования BlowFish

Эта реализация была написана ради эксперимента в области реализации криптографических алгоритмов, просто для того, чтобы попробовать кое-что новое. В мою реализацию BlowFish, созданную на основе описания из книги Брюса Шнайера «Прикладная криптография» включено шифрование и дешифрование массивов байтов, строк, а также показаны простые процедуры шифрования файлов.

Читать далее →

Подробнее

Обработка файлов журналов с помощью D (часть I)

Очень часто при работе с некоторой информацией на компьютере возникает задача обработки огромного массива однотипных данных. К таким данным относится вывод ряда программ, которые в течение достаточно долгого времени собирали информацию, или результаты тесного взаимодействия программ с операционной системой. Вывод таких программ обычно представлен банальными текстовыми файлами относительно скромных размеров, но вот количество этих файлов бывает очень большим. Кроме того, сами текстовые файлы содержат слишком много избыточной информации, и поэтому, возникает необходимость в получении своеобразной краткой сводки по интересующим пользователя параметрам. Для такого рода обработки большого количества текстовых файлов используют скриптовые языки, однако, ничто не мешает для этого использовать свой «родной» язык программирования. Читать далее →

Подробнее

Вычисление CRC32 от строки

Иногда для самых разных целей требуется вычислить контрольную сумму строки. Одним из алгоритмов её вычисления является Cyclic redundancy check (CRC) или Циклический избыточный код. CRC является практическим приложением помехоустойчивого кодирования, основанном на определённых математических свойствах циклического кода. Мы не будем останавливаться на математических подробностях, а просто напишем на D алгоритм CRC32. Читать далее →

Подробнее