После четырёхлетнего перерыва состоялся Международный конкурс обфускации кода на языке 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(); }
Правило 6 явно отсылает к The Prisoner (некоторые другие правила еще глупее). И в правилах есть свои шутки типа «вы находитесь в лабиринте извилистых правил, все разные», есть по крайней мере ноль судей, которые считают, что Fideism имеет мало или вообще ничего общего с процессом судейства IOCCC, мы предлагаем вам не пытаться получить «самый маленький самовоспроизводящийся» источник (самый маленький, запись с нулевым байтом, победил в 1994 году).
В рамках 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. Код в форме смерча;
программа для шифрования и дешифровки текста (код).
Источник: habr.com