После четырёхлетнего перерыва состоялся Международный конкурс обфускации кода на языке C (International Obfuscated C Code Contest, IOCCC, для экспертов и разработчиков Obscure/Obfuscated C program). Организаторы объявили победителей-разработчиков.
Это мероприятие проводится с 1984 года (и отчасти вдохновлено ошибкой в классическом Bourne shell). Считается, что это «старейший конкурс в Интернете» для разработчиков с девизом, что программисты должны получать удовольствие от C. Цель конкурса — «показать важность стиля программирования ироничным образом» и «нагрузить компиляторы C необычным кодом».
Выдержки из официальных правил и требований конкурса:
- правило 0, точно так же, как C начинается с 0, так и IOCCC начинается с правила 0.
- правило 1, ваша заявка должна быть полной программой....
- правило 5, Ваша заявка НЕ ДОЛЖНА изменять содержимое или имя файла любой части вашей исходной заявки, включая, помимо прочего, prog.c, Makefile (который мы создаем на основе ваших инструкций по сборке), а также любые файлы данных, которые вы отправляете....
- правило 6, I am not a rule, I am a free(void *human);
while (!(ioccc(rule(you(are(number(6)))))) {
ha_ha_ha();
}
В рамках IOCCC 2025 разрешалось использовать кодировку UTF-8 в коде. Код каждого участника должен быть интересен и чем-то примечателен.
Работы могли быть необычно оформлены или выделять неожиданные стороны языка C.
Размер исходного кода программы не должен превышать 4096 байт, а программа должна собираться и выполнять осмысленное действие.
По информации OpenNET, список победителей IOCCC 2025:
- помощник в решении головоломки Wordle, в которой нужно угадать пятибуквенное слово за шесть попыток (код);
- чат-бот, использующий модель llama2-7b-chat и OpenMP. Проект отмечен как самый компактный движок для выполнения больших языковых моделей (код всего 1800 байт);
- на первый взгляд программа возводит в квадрат числа от 1 до 10, но на деле показывается рецепт приготовления жареного лосося. Код 15 строк и содержит манипуляции с незаметными символами Unicode;
- эмулятор CPU Intel 4004. Код 14 строк;
- генератор изображений деревьев в консоли. Код оформлен в виде дерева;
- трассировщик лучей, реализованный целиком при помощи макросов C-препроцессора (код);
- физический движок, симулирующий вращение волчка. Код тоже в форме волчка;
- пародия на игру Oregon Trail. Код с огромным числом операторов goto;
- переводчик с языка, использовавшегося радистами‑шифровальщиками навахо (код).
- текстовый редактор eh (код);
- калькулятор, выражения в котором задаются словами (например, «два плюс два»). Код в виде калькулятора;
- рисует текущую фазу луны в консоли. Код в форме луны;
- утилита для удаления артефактов из JPEG‑изображений. Код 42 строки;
- виртуальная машина, способная запускать Doom 1/2 на современных ПК. Код 40 строк;
- генератор кода на C для вывода указанных данных. Код в виде спирали;
- эмулятор CPU OpenRISC, способный запустить Linux. Код 73 строки;
- интерпретатор языка JavaScript с поддержкой объектов, массивов, строк, чисел, функций и сборщиком мусора. Код из 61 строки;
- анимация танцующего Рика Эстли со звуковым сопровождением (код);
- интерпретатор z3-файлов от игры Zork (код);
- генератор пиктограмм в формате pbm из MD5-хэшей. Код — однострочник 135 байт;
- генератор музыки (код);
- симулятор смерча в 3D. Код в форме смерча;
- программа для шифрования и дешифровки текста (код).