
Состоялся 29-й Международный конкурс обфускации кода на языке C (International Obfuscated C Code Contest, IOCCC, для экспертов и разработчиков Obscure/Obfuscated C program). Организаторы объявили 9 проектов победителей-разработчиков. Это мероприятие проводится с 1984 года (и отчасти вдохновлено ошибкой в классическом Bourne shell). Считается, что это «старейший конкурс в Интернете» для разработчиков с девизом, что программисты должны получать удовольствие от C. Цель конкурса — «показать важность стиля программирования ироничным образом» и «нагрузить компиляторы C необычным кодом».
Выдержки из официальных правил и требований конкурса:
правило 0, точно так же, как C начинается с 0, так и IOCCC начинается с правила 0. :-)
правило 1, ваша заявка должна быть полной программой на C....
правило 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 29 разрешалось использовать кодировку UTF-8 в коде. Код каждого участника должен быть интересен и чем-то примечателен. Работы могли быть необычно оформлены или выделять неожиданные стороны языка C. Размер исходного кода программы не должен превышать 4993 байта, а программа должна собираться и выполнять осмысленное действие.
Среди победителей соревнования — эмулятор GameBoy, оптимизированный для «Тетриса», с исходным кодом, который выглядит как GameBoy, а также квази-Roguelike игра, признанная «наиболее вероятной для телепортации». Также были вручены награды за лучший воображаемый эмулятор (виртуальная машина в 366 байтах C) и лучший эмулятор дробных чисел (генератор лабиринтов для Commodore 64).
«В этом году мы добавили забавные задания в конкурс работ‑победителей…», — отмечается на сайте. «После того, как вы разберётесь, что делает та или иная работа‑победитель, мы предлагаем вам попробовать выполнить это забавное задание!», — пояснили организаторы конкурса.
Список победителей IOCCC 29 и их проекты (на GitHub):
2025/cable — Subleq computer;
2025/cesmoak — Black hole punchcard Fortran. Проект имитирует мэйнфрейм IBM 7040, сначала преобразуя программу (закодированную в пробелах) в ASCII‑символьные изображения перфокарт для программы на языке FORTRAN, а затем выполняя эту программу для вычисления света, видимого наблюдателю, смотрящему на черную дыру, и в конечном итоге создавая изображение. Все это воссоздаёт то, что пришлось сделать астрофизику Жан‑Пьеру Люмине в 1978 году, чтобы создать первую в истории смоделированную фотографию чёрной дыры (на мэйнфрейме IBM 7040). «В этой работе также можно запускать другие программы на FORTRAN — но они должны быть предоставлены в виде колоды перфокарт… Предоставлены инструменты для преобразования в/из колод и для интерпретации…»;

2025/endoh3 — patch/diff quine;
2025/jhshrvdp — Quasi‑rogue‑like game;
2025/jingp49 — Dr. WHO sequence. Победитель из Тайваня оформил свой исходный код в форме Тардис из сериала «Доктор Кто» — код, отображающий сложную ASCII‑анимацию вступительной заставки сериала «Доктор Кто» 1963 года;
2025/ncw1 — GameBoy emulator;
2025/tompng — Ocean sound generator;
2025/uellenberg — Quine pong. «Запуск программы генерирует исходный код для создания следующего кадра, отформатированного для отображения текущего кадра. Многократно компилируя и запуская каждый последующий кадр, вы можете играть в игру. Для перемещения передайте в качестве аргумента либо „w“ (вверх), либо „e“ (вниз)…»;
2025/yang2 — Zoltraak encoding.
«Мы планируем открыть IOCCC 30 ближе к концу 2026 года и провести конкурс в течение аналогичного периода времени, завершив его где‑то в конце первого квартала 2027 года», — пояснили организаторы мероприятия.
