Состоялся 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 года», — пояснили организаторы мероприятия.