Почитай что такое "дедупликация". Полезная вещь.
Исходные файлы (ничем не сжатые и незашифрованные) обычно содержат небольшие повторяющиеся блоки данных. А целевой алгоритм сжатия применять не ultra, а просто сильное сжатие, ибо очень медленно сжимать будет, а толку мало.
Если упрощённо, то как-то так:
1. Из исходного изображения извлекаем доминантные цвета, отобранные из палитры уникальных изображений.
2. Генерируем картинку фона, задавая ранее найденные доминантные цвета.
3. Накладываем исходное изображение на фон.
Для пикселя с идеально серыми оттенками будет верно R=G=B.
Можно также перевести RGB в HSV (Hue-Saturation-Value) и проверять значение S. Идеальный оттенок серого в пикселе будет давать S=0. Для неидеального серого (например, сканировав лист A4 в сканере в режиме RGB) значение S будет недалеко от 0.
Некоторые вычисляют для каждого пикселя delta = abs(R-G) + abs(G-B) + abs(B-R)
Нужно определить что является разделителем слов и, сканируя знаки строки поочередно, определять когда слово начинается и заканчивается. По признаку начала слова нужно начинать заносить знаки во временную строковую переменную, а по признаку окончания слова нужно вывести на экран последние буквы из временной переменной.
И так продолжать пока не будет достугнут конец строки. Тогда нужно вывести буквы для последнего слова.
Кодеков для кодирования речи полно: https://en.wikipedia.org/wiki/List_of_codecs#Voice
Наверно стоит исходить из того на какой сегмент устройств расчитано приложение. В разных ОС могут поддерживаться раздичный набор кодеков.
Из кодеков могу предложить Opus.
Но как один из самых распространенных - формат MP3, конечно.
В программе не стоит это делать.
Проверка действительности безопасного соединения осуществляется веб-сервером. В конфигурации сервера (nginx/apache/etc) нужно указать что некоторый API доступен только по HTTPS. Если попытаются обратиться по HTTP, то или отказать в соединении либо перенаправить на HTTPS.
Nginx: https://serverfault.com/questions/250476/how-to-fo...
Вывод на экран производится в текстовом окне (консольный режим), при этом последний текст просто мельком проскакивает, на этом программа заканчивается и сразу же закрывается текстовое окно.
Поэтому нужно запускать экзешник либо при помощи cmd.exe, либо в программе на Паскале добавив последней строку ReadLn; , заново скомпилировав в экзешник. В последнем случае программа будет ждать нажатия на Ввод.
Парсить входной файл как формат CSV: каждую исходную строку рассматривать как набор ячеек. Библиотек полным полно на любом языке программирования.
2-ю ячейку разбиваем на части при помощи регулярных выражений. Каким именно образом - зависит от точного формата ячейки. Скажем, в частном случае название производителя может быть одним словом (Pirelli, Vredestein), а может 2 и более. Таким образом, из одну ячейку мы можем разбить на несколько, записывая результат в строку выходного файла.
Аналогично и с другими ячейками.