Мои решения на https://www.codingame.com.
Нарисовалась, путем уничтожение кем-то или чем-то части данных :)
Хотелось сделать малой кровью.
Реализована идея использования создания архивной копии базы. Делалось на C++Builder 2010.
В качестве архиватора выбран 7-zip (Оф. сайт)
Задача:
Необходимо передать в функцию указатель на двумерный массив (типа: long ** ptr) и в ней динамически создать двумерный массив.
Решение:
На самом деле все просто :) нам нужен указатель на указатель на указатель. Также нужно не забыть уничтожить свежесозданные массивы.
Генератор синусоиды.
В цифровом виде синусоидальная волна образуется из:Сэмпл(sample) или выборка | мгновенное значение волны |
Амплитуда | максимальное и минимальное значения зависят от разрядности. |
Разрядность | количество битов, используемых для представления выборки: 8, 16, 32 и т. д. Максимальная амплитуда равна (2^разрядность) / 2 – 1. |
Частота дискретизации | число выборок в секунду. |
В данном коде получаем 8 битную синусоиду (значения от 0 до 255) частоты freq с частотой дискритизации frqd = 44100 Гц.
nC = C + N - увеличиваем яркость
nC = C - N - уменьшаем яркость
При этом нужно учитывать, что значения канала должны находится в пределах 0 .. 255, поэтому необходимо контролировать выход за эти пределы.
Для переноса изображения из массива в Canvas обычно применяется свойство Canvas->Pixels[x][y].
Но это очень медленный метод. Для ускорения мы создаем объект TBitmap и для доступа к пикселям изображения используем его свойство TBitmap->ScanLine, которое определяет линии изображения. Это уже намного быстрее чем запись в Pixels[x][y].
Получившийся битмап копируем в Canvas при помощи winapi функции BitBlt.