Это было в колледже. Я потерпел неудачу, но хочу знать ответ.
Проблема заключается в следующем: у вас есть 2D-массив структур, который представляет изображение. Каждая структура имеет красное, зеленое, синее и альфа-значение. Может быть больше информации, но не требуется для решения проблемы.
Скажите, что изображение 4000x4000 или 16 миллионов элементов. Каждый элемент необходимо обновлять/проверять на каждом шагу.
Для каждого элемента вам необходимо:
- Установите красный байт в 50, если < 50 или установить значение 205 > 205
- Установите зеленый байт в случайное значение от 0 до 255, используя rand()
- Измените синий цвет "интересным" способом.
"Вы не можете перенаправить это, подумайте более разумно, вам нужен лучший алгоритм"
Я в основном делал цикл. Я был самым быстрым, но он сказал, что это "о поиске лучшего алгоритма, а не использовании симпатичных компиляторов и указателей".
Также должен быть чистый C. Нет OpenMP/Threads или OpenGL shading, OpenCL и т.д.... только ANSI C со стандартными библиотеками (даже библиотеки GNU/POSIX были запрещены).
Я спросил о побитовых операциях, и он сказал, что "они очень дороги в C [??], и о написании быстрого и надежного алгоритма, а не об этих милых трюках, которые вы продолжаете придумывать".
Итак, какие-нибудь намеки?