The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Объявлены победители 29 конкурса по написанию запутанного кода на языке Си

08.06.2026 15:22 (MSK)

Опубликованы исходные тексты работ, победивших в двадцать девятом конкурсе IOCCC (International Obfuscated C Code Contest), участникам которого предлагалось подготовить наиболее запутанный и трудноразбираемый код на языке Си. Участвующие в конкурсе работы, с одной стороны, должны препятствовать анализу кода и пониманию сути решаемой задачи, но, с другой стороны, код должен быть интересен и чем-то примечателен (работы могут быть необычно оформлены или выделять неожиданные стороны языка Си). Размер файла с кодом программы не должен превышать 4993 байтa, а чистый код не должен превышать 2503 байта после обработки утилитой iocccsize.

Среди победителей:

  • Эмулятор компьютера с архитектурой URISC, набор команд в котором ограничивается одной инструкцией SUBLEQ (SUbtract and Branch if Less than or EQual to zero). Размер эмулятора всего 366 байт, при том, что помимо CPU он эмулирует фреймбуфер с разрешением 800x512, используя для вывода графики библиотеку SDL3, и может загрузить образ с Linux и запустить в нём игру doom.
  • Генератор изображения чёрной дыры. Приложение включает простой интерпретатор для подмножества языка Fortran 66, программа для которого задана в форме перфокарт, закодированных через пробелы и табуляции в исходном коде. Закодированная Fortran-программа повторяет первый код для симуляции чёрной дыры, опубликованный Жан-Пьером Люмине в 1978 году. Изображение формируется в виде облака точек и сохраняется в формате PGM. Кроме симуляции чёрной дыры предложены варианты с закодированными "перфокартами" для расчёта множества Мандельброта, вычисления простых чисел и трассировки лучей.
  • Вариант утилиты patch, генерирующий утилиту diff через серию трансформаций собственного кода. На первом этапе скомпилированной утилите patch передаётся собственный исходных код, на основе которого формируется diff-файл. После применения этого diff-а к собственному коду на выходе получается программа, которая в цикле на основе своего кода генерирует набор коммитов с патчами в формате "git am". При объединении данных коммитов командой "git log --pretty=format:%s > final.c" получается код с реализацией утилиты diff.
  • Игра в жанре Roguelike, работающая в текстовом терминале и позволяющая проходить автоматически генерируемый лабиринт, собирать артефакты и избегать монстров. Код оформлен в виде изображения подземного жителя и обфусцирован (строки зашифрованы, циклы реализованы через goto, при работе с массивами используется синтаксис "индекс[массив]").

  • Генератор ASCII-анимации, воссоздающий заставку сериала "Доктор Кто" с симуляцией видеоэффекта "HowlRound" (туннель из уменьшающихся копий изображения), применявшегося в заставке 1963 года.
  • Эмулятор игровой приставки GameBoy, оптимизированный для запуска тетриса, но способный выполнять и другие игры (протестирован запуск ROM-файлов для десятка игр). Вывод формируется в форме псевдографики из Unicode-символов.
  • Симулятор звука морского прибоя на фоне автоматически генерируемой медитативной музыки. На выходе генерируется wav-файл, продолжительностью 5 минут.
  • Реализация самомодифицирующегося игрового автомата Quine Pong, предоставляющего две игры - пинг-понг и перепрыгивающий препятствия динозавр (как в пасхальном яйце из Google Chrome). Программа примечательна тем, что отображение кадров реализовано через цикличную перегенерацию кода программы (запуск приводит к выводу исходного кода для первого кадра, после компиляции этого кода формируется код для следующего кадра и так далее). Игровой процесс реализован через shell-скрипт, выполняющий цикличную перекомпиляцию кода.
  • Компилятор и генератор кода для языка Zoltraak. Язык включает только одно слово "zoltraak", которое комбинируется в разной форме с пробелами и пустыми строками. На вход подаётся любой текстовый файл, который преобразуется в программу на языке Си, состоящую из заголовка и последовательности на языке Zoltraak. Компиляция и выполнение сгенерированной Си-программы приводит к выводу содержимого исходного текстового файла.


/


  1. Главная ссылка к новости (https://www.ioccc.org/news.htm...)
  2. OpenNews: Объявлены победители 28 конкурса по написанию запутанного кода на языке Си
  3. OpenNews: Возобновлено соревнование по написанию запутанного кода на языке Си
  4. OpenNews: Названы победители 27 конкурса по написанию запутанного кода на языке Си
  5. OpenNews: Опубликованы работы, победившие на 21 чемпионате по написанию запутанного кода на языке Си
  6. OpenNews: Результаты 22 чемпионата по написанию запутанного кода на языке Си
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65641-ioccc
Ключевые слова: ioccc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (64) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 15:46, 08/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Не понял про эмулятор в 366 байт.
     
     
  • 2.4, Аноним (4), 15:53, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Что именно непонятно про виртуальный проц с одной инструкцией?
     
     
  • 3.7, Аноним (1), 15:57, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Где он взял линпус и дум под это дело?
     
     
  • 4.11, Аноним (1), 16:00, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    И каким образом это рисуется через SDL.
     
  • 4.58, Аноним (58), 19:09, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А, ну теперь понятен Ваш уровень. Начать надо с гугления "SUBLEQ Cross-compiler", позволяющий скомпилировать Си-код в программу для URISC SUBLEQ процессора.
     
  • 3.8, Аноним (8), 15:58, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Не понятно как он Линукс с игрой дум запускает
     
     
  • 4.18, Аноним (18), 16:07, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Там по ссылке пример есть:

        wget https://raw.githubusercontent.com/adriancable/eternal/main/ioccc/vmlinux.booti
        xz -d vmlinux.bootimage.xz
        ./prog < vmlinux.bootimage

     
     
  • 5.23, Аноним (1), 16:21, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это ничего не объясняет.
     
  • 4.47, kusb (?), 18:10, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Можно ещё один эмулятор каго будь risv-c, тода не придётя портировать Linux пож возможно не подходящую архтуу
     
  • 3.89, Аноним (89), 10:15, 09/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Что именно непонятно про виртуальный проц с одной инструкцией?

    Непонятно - сколько можно ахать про него,
    как мега-неэффективный проц.

    (иначе его бы каждый первый использовал в "проде";
    а пока что - самая производительная и самая победившая на не просратых мобустройствах Micosoft - да (якобы...) сильно переусложнённый и даже давно мегакостыльный: та-да - x86!
    Пусть от него оригинального - уже "рожки и ножки остались" в x86-64 и т.б.с удалением BIOS и MBR обратной совместимостями для ПО).

     
  • 3.90, Аноним (89), 10:46, 09/06/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.19, Аноним (18), 16:14, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Там автор гигантскую работу проделал, кроме написания эмулятора, он написан бэкенд к LLVM для одкомандной архитектуры, портировал musl и библиотеку c программным FPU и смог собрать с его помощью ядро Linux.
     
     
  • 3.51, Аноним (51), 18:27, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Не собрать а запустить ядро Линукса.
     
  • 3.67, Аноним (67), 20:49, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Господи, какой хтонический ужас. Он этим 10 лет занимался?
     
     
  • 4.70, Аноним (70), 21:50, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, конечно, он использует нейросети. В прошлом году он написал инференс для llama в 2кб.
     
     
  • 5.91, Anonimbus (?), 11:27, 09/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Дайте пожалуйста ссылочку почитать
     
  • 3.96, Аноним (96), 18:09, 09/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это работает быстрее Linux на 4004 ?
     
  • 2.72, Аноним (72), 21:57, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Эмулятор компьютера с архитектурой URISC

    Автором заявлен OISC.

    > набор команд в котором ограничивается одной инструкцией SUBLEQ

    Но:

    > If the low bit on any operand is set, remove it, and replace that operand with m[operand], i.e., a dereference of that address.

    Что в SUBLEQ нет. И это создаёт вторую инструкцию, поэтому это не OISC.

     
  • 2.92, Аноним (92), 12:52, 09/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/adriancable/eternal/blob/main/docs/machine_architecture.md
    https://github.com/adriancable/eternal/blob/main/vm/vm.c
    https://github.com/adriancable/eternal/blob/main/docs/esi_linux_port.md
     
     
  • 3.97, Аноним (97), 18:10, 09/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    С уязвимостью, которую автор принципиально не хочет исправлять "ради простоты кода".

    https://github.com/adriancable/eternal/issues/3

     

  • 1.3, Аноним (4), 15:52, 08/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    > закодированных через пробелы и табуляции
    > комбинируется в разной форме с пробелами и пустыми строками

    Какой смысл в этих работах?

     
     
  • 2.6, Аноним (6), 15:57, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Милый исходник
    https://github.com/ioccc-src/winner/blob/master/2025/yang2/prog.c
     
     
  • 3.25, Аноним (1), 16:24, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это тян?
     
     
  • 4.27, Аноним (27), 16:29, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Это Ферн, а Зольтраак это базовое атакующее заклинание, которым она в основном и пользуется в боях. Это база знать надо.
     
  • 4.28, Аноним (28), 16:29, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тянокун
     
  • 2.9, Аноним (9), 15:58, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    for fun
     
  • 2.13, Аноним (13), 16:01, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Выиграть конкурс
     
  • 2.17, Соль земли2 (?), 16:06, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Чтобы ты завидовал и компенсировал это через критику.
     
  • 2.21, Аноним (28), 16:16, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Раньше было показать примеры, как надо прятать бекдоры от кожаных мешков. Теперь, наверное, как их прятать от ИИ.
     
  • 2.44, Джон Титор (ok), 18:01, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Смысл каждая вложившая в это компания может найти свой, ну к примеру:
    - обучить ИИ разбирать сложный код
    - найти такой код, который сложно разбирать доступным по всему миру ИИ (например с помощью DeepSeek - американцы же не единственные кто разработал ИИ)
    - найти талантливых разработчиков и дать им работу, заодно попиарить на мероприятии свои компании (инвесторов проекта) и выставить их более дорого в глазах потребителей и инвесторов этих компаний
    - научные исследования. Да, я смотрю как многие пишут допустим то что люди которые используют ИИ делают код и это не самое важное, но на самом деле это не совсем так. Те кто пишет код - делает открытия как что делать лучше, как и что получается. Кто-то конечно это смотрит и учится на чужих ошибках, но свои исследования и развивать проекты такие люди как правило не умеют. Они как паразиты - пользуются чужим опытом и бытовыми проблемами (отсутствие денег в основном, т.к. управление у нас через капитализм, т.е. через деньги). А вот те люди, у которых совсем ничего нет просто прячут свою несостоятельность что-то делать для общества под маской сильной занятости и отсутствия времени на общество в котором они живут.
    - а если конкретно про "закодированных через пробелы и табуляции", ну так для господ связанных с безопасностью это вообще интересное открытие как шифровать код, сообщения. Представляете себе разведчика который с кем-то обменивается пустыми файлами? Кто-то откроет и подумает - просто пустой файл, нужно искать далее. Как по мне это гениально то что они открыли.
     
     
  • 3.82, Аноним (89), 09:44, 09/06/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 3.83, Аноним (89), 09:53, 09/06/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.45, Джон Титор (ok), 18:03, 08/06/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.54, Аноним (54), 18:51, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Лучшеб на Раст что-нибудь переписали !
     
     
  • 3.57, Аноним (57), 19:07, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Код должен быть непонятный, но рабочий, а с растом вышло бы всё наоборот.
     
     
  • 4.59, Аноним (58), 19:14, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > а с растом вышло бы всё наоборот

    Код на расте вроде бы рабочий, но не может пройти тесты. И никто не понимает, как это исправлять.

     
     
  • 5.84, Аноним (89), 09:54, 09/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Звучит как вроде-беременная...
     

  • 1.10, Аноним (8), 15:59, 08/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Их бы усилия да в мирное русло.
     
     
  • 2.15, Аноним (13), 16:03, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Твои бы усилия про коментирование усилий да в мирное русло
     
     
  • 3.22, Аноним (22), 16:17, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Твои бы усилия про коментирование усилий да в мирное русло
     
     
  • 4.52, kusb (?), 18:28, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Здесь был условный вызов иногда приводящий к хвостовой рекурсии.
     

  • 1.16, Карлос Сношайтилис (ok), 16:06, 08/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    > конкурса по написанию запутанного кода на языке Си

    А конкурс по написанию понятного и безбажного кода на Си будет?

     
     
  • 2.60, kusb (?), 19:14, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А как оценивать понятность и безбаж кода?
     
     
     
    Часть нити удалена модератором

  • 4.49, Аноним (51), 18:21, 08/06/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.29, Аноним (29), 16:29, 08/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Разве это запутанный код? По мне так это просто непонятный эмодзи-код. Запутанный код, это когда невозможно отследить логику и понять что там к чему, разве нет?
     
     
  • 2.36, Аноним (36), 16:54, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    если невозможно отследить, то как компилятор должен это разобрать, значит это уже не код
     
     
  • 3.94, SubGun (??), 14:06, 09/06/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.85, Аноним (89), 10:03, 09/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тебя прям коммерческого качества DRM подавай... ещё и с анти-отладочными Ring-0 и выше  приёмами.
    Хоть конечно эти все участники - косвенно пособники их создания, можете "поблагодарить" - массово плюнув в них...
     

  • 1.30, Аноним (30), 16:37, 08/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Хоть кто-то чем-то полезным занят.
     
     
  • 2.41, Alladin (?), 17:22, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    кто-то тот кто не пошел на этот конкурс? ты про это?
     

  • 1.43, Джон Титор (ok), 17:48, 08/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > программа для которого задана в форме перфокарт, закодированных через пробелы и табуляции в исходном коде

    Прикольно. Открываешь пустой файл, а это оказывается исходный код.

     
  • 1.48, Аноним (51), 18:18, 08/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Из года в год, каждый раз читая новости я офигеваю. Люди вытворяют просто невобразимые вещи.
     
     
  • 2.86, Аноним (89), 10:05, 09/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да каждый повыше другого прыгают за морковкой, что ждать от ослов
     

  • 1.53, kusb (?), 18:29, 08/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Они пишут непонятный код, а я едва понимаю даже понятный.
     
     
  • 2.87, Аноним (89), 10:06, 09/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    И никто уже Linux ядро, которое ещё же на Си для большей понятности ;)
     

  • 1.65, Аноним (65), 20:20, 08/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Вот видите какая мощь языка С, всего в 2 килобайтах можно сделать невероятные вещи.
    А кто-то хочет выкинуть этот язык ...
     
     
  • 2.66, 12yoexpert (ok), 20:46, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    майкрософт, потому что не контролирует, поэтому и пытается залочить всех на раст, в том числе пролоббируя законы через дружков элоны
     
     
  • 3.78, Сергей (??), 22:33, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    От куда эта у всех в голове. Однажды инженер в MS просто написал статейку, что в теории можно всё в MS переписать на Rust. Всё. Не было ни цели, ни попыток. Не плана.
    И в каждую щель теперь это пишут.
     
  • 2.68, Аноним (67), 20:51, 08/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да нет, как раз для таких конкурсов никто вроде не против оставить С))
     
  • 2.95, Аноним (95), 15:15, 09/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    У любого языка этого класса одинаковая мощь, хоть их и немного. Та же мощь у C++, FORTRAN, Zig, Odin, Jai и у иррационально ненавидимого вами до кровавых слез Rust.

    И никто не предлагает выкидывать куда-то лошадь с появлением двигателей - просто постепенно переходим на новые средства передвижения, войны и сельско-хозяйственных работ, а лошадь оставляем для исторических реконструкций, скачек и просто на всякий случай.

     

  • 1.93, Тот_Самый_Анонимус_ (?), 13:18, 09/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Игра в жанре Roguelike

    Для рогулей. Знову першие!

     
  • 1.98, Аноним (98), 22:50, 09/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Дом листьев от мира C
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру