Циклические сдвиги и криптопримитив enRUPT

Читая статьи с HabrHabr по одному из самых странных языков программирования (называется J, если кому-то интересно), я встретил в комментариях описание очень простого и компактного алгоритма шифрования под названием enRUPT. Меня заинтересовало то, что этот алгоритм, точнее криптопримитив (элементарную криптографическую операцию) можно описать буквально в несколько строк.

Подробнее

Определить порядок байтов, используемый текущей архитектурой

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

Подробнее

Простой ГПСЧ на базе XorShift256

В этой статье, я покажу простой рецепт для того, чтобы создать собственный генератор псевдослучайных чисел (ГПСЧ) на базе известного алгоритма XorShift256. Данный генератор потребует минимального набора операций, а также задания нескольких констант, инициализирующих ГПСЧ (параметры называются по четырем первым буквам латинского алфавита, и хранятся в виде статического массива ulong[4]). Константы для генератора надо либо подбирать […]

Подробнее

Перемещение объектов в heap

Официальная документация частенько удивляет! На этот раз мы нашли полезный рецепт в changelog к старой (на данный момент) версии компилятора. Шаблон moveToHeap принимает некий объект, извлекает указатель на него, производит выделение памяти с помощью GC.malloc и  moveEmplace (который лежит в std.algorithm) осуществляет перемещение данных из одного участка памяти в другой. С помощью взятия и распечатки […]

Подробнее

Использование dub для приложений из одного *.d файла

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

Подробнее

Простой генератор целочисленных делителей частоты на D

При создании цифровых устройств на базе микросхем программируемой логики (ПЛИС) часто требуется из входной частоты тактового генератора на плате получить некую другую частоту. Казалось бы с этим с успехом справляются встроенные генераторы на базе PLL, но а что если все такие генераторы уже заняты и нужно как-то из входной частоты получить новую, но при этом […]

Подробнее

Складываем пасьянс Медичи

В этой статье, я попытаюсь объяснить, как мне удалось своими силами создать алгоритм свертки одного из самых загадочных пасьянсов — Пасьянса Медичи. Предупреждаю сразу, в отличии от множества эзотерически настроенных людей, я не склонен думать, что этот пасьянс как-то влияет на события или описывает алгоритм их схождения к некому результату. Я скромный экспериментатор, которому интересна […]

Подробнее

Алгоритм для «перемешивания» массива случайным образом

Этот рецепт продемонстрирует вам алгоритм, работающий с любым диапазоном ввода и генерирующий новый диапазон, в котором элементы переставлены («перемешаны») случайным образом. Алгоритм, в контексте данного рецепта, обозначает нечто такое, что манипулирует диапазонами (т.е практически то же понимание термина «алгоритм», которое и используется в D) и ни в коем случае не намекает на традиционный смысл понятия […]

Подробнее

Отрисовка и закраска многоугольников в dlib

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

Подробнее

Формула Бэйли-Боруэйна-Плаффа

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

Подробнее