Опубликованы (http://www.ioccc.org/years.html) исходные тексты работ (http://www.ioccc.org/2012/whowon.html), победивших в двадцать первом конкурсе IOCCC (International Obfuscated C Code Contest), в рамках которого предлагалось написать на языке Си наиболее запутанный и трудноразбираемый код, на основании анализа которого проблематично разобраться в сути решаемой задачи. При этом код должен быть интересен и чем-то примечателен, подчеркивая важность правильного стилевого оформления или выделяя неожиданные стороны языка Си. Размер исходного кода программы не должен превышать 4096 байт, программа должна собираться и выполнять какое-либо осмысленное действие.
Среди победителей:- Первое место: Adar Zeitak (http://www.ioccc.org/2012/zeitak) - определение корректности расстановки скобок;
- Второе место: Tsukasa Hamano (http://www.ioccc.org/2012/hamano/) - формирование PDF с танцующим человечком;
<center><img src="http://www.opennet.me/opennews/pics_base/0_1350725672.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border=0></center>- Третье место: Daniel Vik (http://www.ioccc.org/2012/vik/) - реализация тайнописи;
- Cамая полезная работа: Qiming HOU (http://www.ioccc.org/2012/hou/) - система подсветки синтаксиса;
- Самая законсперированная работа: Aaron Grothe (http://www.ioccc.org/2012/grothe/) - cхема (http://ru.wikipedia.org/wiki/%D0%A1%D1%8... разделения секрета Шамира;
- Лучший однострочник: Taketo Konno (http://www.ioccc.org/2012/konno/) - генератор изменённого собственного кода;
- Наиболее скрытная программа: Don Yang (http://www.ioccc.org/2012/omoikane/) - шифрование текста в виде Си-программы;
<center><img src="http://www.opennet.me/opennews/pics_base/0_1350723982.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border=0></center>
- Лучшая короткая программа: Seonghoon Kang (http://www.ioccc.org/2012/kang/) - декодирование чисел;
- Самая полезная программа: John Tromp (http://www.ioccc.org/2012/tromp/) - реализация лямбда-вычислений (http://en.wikipedia.org/wiki/Binary_Lambda_Calculus);- Наиболее значительный и лучший инструмент: Alex Deckmyn (http://www.ioccc.org/2012/deckmyn/) - формирование музыкальных нот;
- David Lowe (http://www.ioccc.org/2012/dlowe/) - реализация аркадной игры Жизнь;
- Yusuke Endoh (http://www.ioccc.org/2012/endoh2/) - генерация программы, оформленной в виде ASCII-картинки с изображением греческой буквы Пи, которая занимается рассчётом числа Пи;
- Philip Blakely (http://www.ioccc.org/2012/blakely/) - генерация анимированного GIF-изображения с изображением меняющейся 3D-поверхности;
- Yusuke Endoh (http://www.ioccc.org/2012/endoh1/) - визуализация перетекания текста в ASCII-графике;<center><img src="http://www.opennet.me/opennews/pics_base/0_1350725106.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border=0></center>
URL: http://developers.slashdot.org/story/12/10/19/2359243/21st-i...
Новость: http://www.opennet.me/opennews/art.shtml?num=35129
"Лучше бы эти бездельники сделали <you name>" (tm)
Я бы не хотел, чтобы меня кто-то делал.
Но там написано не "your".
Да сделать прогу делающую ASCII-art из текста(кода) и убирающую ненужные пробелы и переносы строк и переименовывающую переменные, как это делают оптимизаторы html css js и таких работ с картинками можно кучу наделать из любой проги :)
нуда думаю трудности перевода - ASCII-графика большеничего не вижу запутанного, из- за этой самой графни код абсолютно нечетабельный, а вобще скобки детектится обычным стеком - просто до не могу.
The International Obfuscated C Code Contest (http://en.wikipedia.org/wiki/Obfuscation_%28software...
На питоне так можно сделать? kekeke :)
да
> данет
или крайне затруднительно - там отступы - такаже лексографический элемент как фигурная скобка в си.
> 'true' if False else 'false'И никаких вам пробелов/табуляций. for можно раскрыть и т.д.
так горишь как-буто if неприкасаемый и его тело выделять не надо, на типоне не пипишу, тебе кто-нибуть другой расскажет, меня его ООП и лексика немного вымораживает, мне с-подобная нравится. на сях я эту конструкцию выделяю.хотя я кажется понял - предлагаешь в одну строчку? ну на сях так можно про питон м.б. - не знаю и то с длиной строки будешь сношаться.
> даНу-ка, покажи? Чтоб как вон та девочка с косичкой - слабо?
Это не косичка, это ахоге.
Так и не понял как создать pdf c танцующим человечком.
Нихрена не создается
А, ухты - работает!
Думал будет в человечка как в исходнике закручивать текстовый файл, а оно делает шифровку а-ля как в шерлоке холмсе.Жалко с кириллицей не прокатывает.
> Yusuke Endoh - генерация программы, оформленной в виде ASCII-картинки с изображением
> греческой буквы Пи, которая занимается рассчётом числа Пи;Странно, в школе пи никогда не выглядело наподобие водопроводного крана... пришлось смотреть http://www.ioccc.org/2012/endoh2/hint.html для того, чтобы понять фрагмент про http://www.ioccc.org/2012/endoh2/endoh2.c
> Странно, в школе пи никогда не выглядело наподобие водопроводного крана... пришлось смотреть"эта штука называется - гусак,
а кран выглядит совершенно не так" (с)
Кран там тоже есть. Сходите по ссылке, товарищ сантехник ;)
Сделал GIF размером 100x100. Жаль, что для аватарки не подходит.
Nyaruko! (」・ω・)」うー!(/・ω・)/にゃー!
Make a contract with me and become a magical girl!
Раздражает, что часть они пытаются код постоянно подогнать под какую-то ASCII-art-овую картинку.Запутывать надо логикой, а не оформлением.
Там у победителя есть вариант кода не в виде картинки, а так, как писалось. В этом тоже разобраться весьма сложно.
> Там у победителя есть вариант кода не в виде картинки, а так,
> как писалось. В этом тоже разобраться весьма сложно.Ну вот, например, orig один: http://www.ioccc.org/2012/zeitak/zeitak.orig.c
Да, есть deobfucate-файл рядом, но это уже "deobfucate", а не "orig".
Ну или где тут вариант "как писалось" — http://www.ioccc.org/2012/hou/ ?
Да, и даже если забить на это, то всё-равно какое отношение имеет подобное оформление к обфускациям? Это не есть "запутывание" кода. А переоформить всё по-человечески - это тупой мартышкин труд не требующий никакого анализа.
Я понимаю, что традиция такая уже давненько сложилась, уже не первый код заглядываю в код победителей по данному соревнованию, но тем ни менее, лично мне это кажется как-то не очень уместным. Если бы это были бы единичные случаи - это было бы мило, а иначе это уже немного раздражает :)
И ещё момент, я нигде не говорил, что код там простой. Я лишь сказал о неуместности так оформлять во всех работах подряд.
Ещё добавлю, что к оформлению относится и #define одного на другое (без усложнения логики). Обычный препроцессор расскажет как всё на самом деле, тоже слишком тупо. Красиво, когда делают что-то вроде этого — "http://govnokod.ru/1274" (с помощью всяких рекурсий на функцию main получается сильно сжатый текст).
> "http://govnokod.ru/1274"Автор, конечно же, совершенно невменяем - но в этом что-то есть...
> Раздражает, что часть они пытаются код постоянно подогнать под какую-то ASCII-art-овую картинку.А летчики рисующие самолетами в небе всякую фигню сэра не раздражают? А ты сам попробуй нарисуй, узнаешь почем фунт лиха :)
Не впечатляет.
> Не впечатляет.Серьёзно?
int _;main(O,l,o)char**l,**o;{_++>>9||main(1&(o?(int)o:O)|O*2,l,putchar(_2?atoi(1[l])>>(7&O<<!o>>!o+29)&32<_|_==16?35:32:10));}
[xaionaro@imperium ~]$ ./a.out 90
#
# #
# #
# # # #
# #
# # # #
# # # #
# # # # # # # #
# #
# # # #
# # # #
# # # # # # # #
# # # #
# # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # #А по-моему очень даже прикольно :)
[сообщение отредактировано модератором]
Не всех это прикалывает. Кому-то дано любоваться математикой, кому-то нет.
Я в этом еще в школе убедился, когда появились БК-шки со встроенным Бейсиком.
Например, простенькая формула:
x = screenWidth / 2 + a * y * sin( b * y ) * cos( c * y )
при подстановке разных констант рисует разные, но почти всегда красивые "новогодние елочки". Мы с другом, помнится, часами ковырялись с такими программами под недоуменными взглядами одноклассников, которых "не цепляло".
Да не, после перловки "запутанный" код на Си как-то не цепляет. %)
Вы просто не умеете её готовить!Хотя лично мне доставляет, смотреть на грамотно оформленный код, да который еще и по качеству хорош. Вот это да! А тут так, побаловаться школоте, не более.
Вот они зайчатки искуственного интеллекта.
Да вы чо, морлоки, это ж классика!!! А переводить "запутанный" - аж зубы сводит. Sputnik, он, Sputnik.
Вася написал плохой код на Java. Позор Java!
Ничего он не должен. Язык - инструмент, а не нянька. Не умеешь пользоваться - не трогай.
2 dq0s4y71, kshetragia: коллеги, прошу всё-таки обходиться без мата. Можете на меня теперь ругаться, что модератор вынужден с ним исключать и обсуждение по существу...
> 2 dq0s4y71, kshetragia: коллеги, ...Михаил, а они - точно коллеги или "коллеги"?
Как написал, так и считаю.
Иногда, все-таки, мат нужен для придания правильной эмоциональной окраски и более полного раскрытия смысла сказанного.
> Иногда, все-таки, мат нужен для придания правильной эмоциональной окраски и более полного
> раскрытия смысла сказанного.Три-четыре года назад я тоже так думал. Сейчас уверен в обратном.
Лексикон тут недостаточен. Нужен антураж - потемки, грязь, вонища... - чтобы донести до собеседника это остро испытываемое вами чувство привокзального сортира. Без антуража экспрессия пропадает втуне.Поэтому на форумах желательно "для разнообразия побыть как культурные люди".
> Лексикон тут недостаточен. Нужен антураж - потемки, грязь, вонища... - чтобы донести
> до собеседника это остро испытываемое вами чувство привокзального сортира. Без антуража
> экспрессия пропадает втуне.
> Поэтому на форумах желательно "для разнообразия побыть как культурные люди".С облегченьицем.
> Поэтому на форумах желательно "для разнообразия побыть как культурные люди".Не согласен. Даже ругань бывает полезной. Например, Торвальдс и Нвидия. Публичный фак имел весьма позитивные последствия. Хоть и брань.
> Например, Торвальдс и Нвидия.Зря он так, всё же.
> Иногда, все-таки, мат нужен для придания правильной эмоциональной окраски
> и более полного раскрытия смысла сказанного.Если что, #52 кто-то успел удалить до меня -- а п.4 http://wiki.opennet.ru/ForumHelp всё так же не отменяли.
> 2 dq0s4y71, kshetragia: коллеги, прошу всё-таки обходиться без мата.Я, похоже, пропустил самое интересное. Я в эту ветку запостил только одно сообщение (до того, как его потёр модератор) и мата в ней не было. Я вообще в публичных местах матерюсь только в крайних случаях :)
> Я, похоже, пропустил самое интересное.Не, просто процитировали, простите за невнятность.
Должен. Как хорошая стиральная машинка не позволит её открыть во время работы. Так и язык просто обязан избавлять меня от лишнего геморроя. Даже на циркулярной пиле есть защита. Хотя тоже инструмент, а не нянька.
> Должен. Как хорошая стиральная машинка не позволит её открыть во время работы.Спорное утверждение.
> Так и язык просто обязан избавлять меня от лишнего геморроя.Ы! Нет, не обязан, если ты не лидер общества потребителей, т.е. человек "лишь бы пожрать и поспать".
> Даже
> на циркулярной пиле есть защита. Хотя тоже инструмент, а не нянька.Да, но не снизу. Сунув палец вместе с доской - его тоже и отпилишь.
> Ы! Нет, не обязан, если ты не лидер общества потребителей, т.е. человек
> "лишь бы пожрать и поспать".Э-э нет. Я не хочу думать о тысяче мелочей если в этом нет необходимости. Это порождает ошибки которые легко можно было бы избежать.
>> Даже
>> на циркулярной пиле есть защита. Хотя тоже инструмент, а не нянька.
> Да, но не снизу. Сунув палец вместе с доской - его тоже
> и отпилишь.Да. Но на циркулярке написано: "Не делайте так". В случае ЯП я хочу такую же надпись "изкаробки" максимально где это возможно. и иметь ключ компилятора "явсёосозналихочуэтоиспользоватьвсёравно" для желающих использовать "снизу".
> Э-э нет. Я не хочу думать о тысяче мелочей если в этом
> нет необходимости.Думать всё равно придётся. Не будешь думать ты - за тебя думать и решать будут другие.
> Это порождает ошибки которые легко можно было бы избежать.
Каким образом если ты понимаешь что делаешь?
> Да. Но на циркулярке написано: "Не делайте так".
Ну, хорошо. Но на молотке то не написано, да и инструкции, как правило, нет. Но ведь не убиваются же поголовно, так? Ну, максимум, палец "посинят".
> В случае ЯП я
> хочу такую же надпись "изкаробки" максимально где это возможно.Теоретически это возможно, но на практике будут сплошные ограничения. А тебе понравится "ходить строем"? Т.е., делать только так, как решил автор (языка)?
Например, длина переменной last name (eng) = 16 символов. А в русском - другие аспекты. Например, составные фамилии типа Пердуновский-Михельсон.> и иметь
> ключ компилятора "явсёосозналихочуэтоиспользоватьвсёравно" для желающих использовать
> "снизу".Нет уж, дудки! Или - или. Или жестко или нет.
Просто некоторым людям нравится когда вообще не надо думать - исполняй приказы со стороны и все тут (эдакий инициативный пассив). Сотни книг написано как нельзя и как надо использовать язык, но нет, давайте закрутим программистам яйца изначально - это верно, но только для того кто так думает. Их надо закрутить их и близко не подпускать к подобной работе. Идите на бейсик - пишите свое УГ и не сотрясайте Мир по чем зря.
> Просто некоторым людям нравится когда вообще не надо думать -К сожалению, не некоторым, а многим.
> ... но нет, давайте закрутим
> программистам яйца изначально ...Не, программист - собака вольная. Хрен чего получится.
> так думает. Их надо закрутить их и близко не подпускать к
> подобной работе. Идите на бейсик - пишите свое УГНе надо бейсик трогать - мы помним БК0010, ДВК4. Помним, скорбим...
> Не, программист - собака вольная. Хрен чего получится.Об этом и говорю. kshetragia и подобные думают иначе. Видимо хронический PHP.
>> Не, программист - собака вольная. Хрен чего получится.
> Об этом и говорю. kshetragia и подобные думают иначе. Видимо хронический PHP.PHP, к слову, я органически не перевариваю. К тому же где вы там увидели ограничения?
Они в неявном виде есть - в головах программистов, которые, в отличии от Вас, охотно переваривают его.
> Они в неявном виде есть - в головах программистов, которые, в отличии
> от Вас, охотно переваривают его.Меня не интересуют головы программистов. И я умею обращаться с PHP. От этого он лучше не стал.
> Не надо бейсик трогать - мы помним БК0010, ДВК4. Помним, скорбим...Что, отпала у детей игрушка? Ничо, вон гвидобэйсик для таких есть.
> Думать всё равно придётся. Не будешь думать ты - за тебя думать
> и решать будут другие.
>> Это порождает ошибки которые легко можно было бы избежать.
> Каким образом если ты понимаешь что делаешь?А ты уверен, что точно понимаешь ВСЕ последствия того, что делаешь? Особенно в плюсах.
> Ну, хорошо. Но на молотке то не написано, да и инструкции, как
> правило, нет. Но ведь не убиваются же поголовно, так? Ну, максимум,
> палец "посинят".Вот поэтому и не написано, что максимум "палец посинят".
>> В случае ЯП я
>> хочу такую же надпись "изкаробки" максимально где это возможно.
> Теоретически это возможно, но на практике будут сплошные ограничения. А тебе понравится
> "ходить строем"? Т.е., делать только так, как решил автор (языка)?Первое время может и будут. Потом найдется баланс между ограничениями и возможностями.
> Например, длина переменной last name (eng) = 16 символов. А в русском
> - другие аспекты. Например, составные фамилии типа Пердуновский-Михельсон.И что? Значит длина переменной last name должна быть неограниченной? Или все-таки разумной?
>> и иметь ключ компилятора "явсёосозналихочуэтоиспользоватьвсёравно" для желающих использовать "снизу".
> Нет уж, дудки! Или - или. Или жестко или нет.Только в вашем воображении. Зачем НАСТОЛЬКО усложнять себе жизнь. Жёстко ничем не лучше чем слишком мягко.
> Э-э нет. Я не хочу думать о тысяче мелочей если в этом
> нет необходимости. Это порождает ошибки которые легко можно было бы избежать.А, любитель сушить кошек в микроволновке, для которого и пишут инструкции вида "кошек не сушить"? :)
> Так и язык просто обязан избавлять меня от лишнего геморроя.Тогда он будет заказчиком убийства, а Вы жертва. Это конечно если язык "хороший" и избавляющий от геморроя "из коробки".
А где же индусы с пляшущим кодом на одну строку? :)
Почему не проводят соревнования по самом понятному и короткому коду? ЗОГ не дремлет?
В таких соревнованиях постоянно участвуют авторы учебников, после которых ученик не способен написать ничего, кроме простого, понятного и бесполезного кода.А те, кто пишет простой, понятный и полезный код, получают за него бонусы без всяких конкурсов...
Т.е. получается что такие конкурсы организованы неудачниками для неудачников?
как это можно было в тему важное закинуть?
Не «самая полезная программа», а «самая функциональная программа», там игра слов, как мне кажется