Организаторы IOCCC (Международный конкурс на самый непонятный код C) нажали кнопку «турбо». Если результаты прошлого конкурса опубликовали спустя четыре года после проведения, теперь прошло всего два месяца — и вот они.
Участвовать в конкурсе могут готовые программы размером меньше 4096 байт, при этом количество значимых символов, без учёта пробелов, знаков табуляции и знаков ; ( ), не должно превышать 2048. Задачей конкурса является «проверять компиляторы на стресс, демонстрировать тонкости языка программирования Си и важность соблюдения стиля программирования (делая обратное)».
Титул победителя (Best of Show) и звание «самой уменьшаемой» (most shrinkable) завоевал четырёхуровневый даунсэмплер akari (Makefile, akari.c). Программа умеет уменьшать разную графику, в том числе ASCII-графику. Поскольку её исходный код тоже отформатирован в виде ASCII-графики, то она может уменьшить и свой исходный код. В результате получается другая валидная программа на C, которая может обрабатывать текст. И это тоже ещё не конец. Обработав код вторично с помощью новой программы, получается третья функциональная программа (здесь компилятор gcc уже начинает выдавать некоторые предупреждения, но всё равно сделает исполняемый файл).
Другие победители:
- blakely (Makefile, blakely.c): программа играет в «Жизнь» Конвея, вычисляет число Пи до 16 знаков после запятой, получив на входе свой исходный код, а также проверяет первичность клеточного автомата
- borsanyi (Makefile, borsanyi.c): быстрый генератор гистограмм необычным способом
- dlowe (Makefile, dlowe.c): самообучающаяся нейросеть
- eastman (Makefile, eastman.c): попытка повторить классический Amiga Boing Ball с помощью ASCII-графики
- fredriksson (Makefile, fredriksson.c): с помощью декомпрессора Барроуза-Уилера создаёт исходный код программы agrep и запускает её (награда за «самую полезную» программу на IOCCC)
- goren (Makefile, goren.c): программа-ребус в память о Рене Магритте
- hamaji (Makefile, hamaji.c): программа для решения японских кроссвордов
- hou (Makefile, hou.c): самодокументирующий научный калькулятор
- konno (Makefile, konno.c): распознаёт нажатия клавиш на QWERTY-клавиатуре
- richards (Makefile, richards.c): JIT-компилятор и калькулятор dc
- toledo (Makefile, toledo.c): игра в «танки» для двух человек (требует X11)
- vik (Makefile, vik.c): конвертер аудиофайлов .MOD в 44,1 кГц стерео и плеер
- zucker (Makefile, zucker.c): генератор картинок с изображением символов
Автор: alizar