
После четырёхлетнего перерыва состоялся Международный конкурс обфускации кода на языке 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;
-
генератор изображений деревьев в консоли. Код оформлен в виде дерева;
-
трассировщик лучей, реализованный целиком при помощи макросов C-препроцессора (код);
-
физический движок, симулирующий вращение волчка. Код тоже в форме волчка;

-
пародия на игру Oregon Trail. Код с огромным числом операторов goto;
-
переводчик с языка, использовавшегося радистами‑шифровальщиками навахо (код).
-
калькулятор, выражения в котором задаются словами (например, «два плюс два»). Код в виде калькулятора;
-
утилита для удаления артефактов из JPEG‑изображений. Код 42 строки;
-
виртуальная машина, способная запускать Doom 1/2 на современных ПК. Код 40 строк;
-
генератор кода на C для вывода указанных данных. Код в виде спирали;

-
эмулятор CPU OpenRISC, способный запустить Linux. Код 73 строки;
-
интерпретатор языка JavaScript с поддержкой объектов, массивов, строк, чисел, функций и сборщиком мусора. Код из 61 строки;
-
анимация танцующего Рика Эстли со звуковым сопровождением (код);

-
интерпретатор z3-файлов от игры Zork (код);
-
генератор пиктограмм в формате pbm из MD5-хэшей. Код — однострочник 135 байт;
ссылка на оригинал статьи https://habr.com/ru/articles/933706/
Добавить комментарий