Комментарии 29
НЛО прилетело и опубликовало эту надпись здесь
Давно текст гифом не жали.
В PNG вышло больше, представьте себе.
>Давно текст гифом не жали.
Угу, при том, что Хабр прекрасно умеет подсвечивать код самостоятельно. И вполне неплохо прожевал победителя:
Угу, при том, что Хабр прекрасно умеет подсвечивать код самостоятельно. И вполне неплохо прожевал победителя:
/*
+
+
+
+
[ >i>n[t
*/ #include<stdio.h>
/*2w0,1m2,]_<n+a m+o>r>i>=>(['0n1'0)1;
*/int/**/main(int/**/n,char**m){FILE*p,*q;int A,k,a,r,i/*
#uinndcelfu_dset<rsitcdti_oa.nhs>i/_*/;char*d="P%" "d\n%d\40%d"/**/
"\n%d\n\00wb+",b[1024],y[]="yuriyurarararayuruyuri*daijiken**akkari~n**"
"/y*u*k/riin<ty(uyr)g,aur,arr[a1r2a82*y2*/u*r{uyu}riOcyurhiyua**rrar+*arayra*="
"yuruyurwiyuriyurara'rariayuruyuriyuriyu>rarararayuruy9uriyu3riyurar_aBrMaPrOaWy^?"
"*]/f]`;hvroai<dp/f*i*s/<ii(f)a{tpguat<cahfaurh(+uf)a;f}vivn+tf/g*`*w/jmaa+i`ni("/**
*/"i+k[>+b+i>++b++>l[rb";int/**/u;for(i=0;i<101;i++)y[i*2]^="~hktrvg~dmG*eoa+%squ#l2"
":(wn\"1l))v?wM353{/Y;lgcGp`vedllwudvOK`cct~[|ju {stkjalor(stwvne\"gt\"yogYURUYURI"[
i]^y[i*2+1]^4;/*!*/p=(n>1&&(m[1][0]-'-'||m[1][1] !='\0'))?fopen(m[1],y+298):stdin;
/*y/riynrt~(^w^)],]c+h+a+r+*+*[n>)+{>f+o<r<(-m] =<2<5<64;}-]-(m+;yry[rm*])/[*
*/q=(n<3||!(m[2][0]-'-'||m[2][1]))?stdout /*]{ }[*/:fopen(m[2],d+14);if(!p||/*
"]<<*-]>y++>u>>+r >+u+++y>--u---r>++i+++" <)< ;[>-m-.>a-.-i.++n.>[(w)*/!q/**/)
return+printf("Can " "not\x20open\40%s\40" "" "for\40%sing\n",m[!p?1:2],!p?/*
o=82]5<<+(+3+1+&.(+ m +-+1.)<)<|<|.6>4>-+(> m- &-1.9-2-)-|-|.28>-w-?-m.:>([28+
*/"read":"writ");for ( a=k=u= 0;y[u]; u=2 +u){y[k++ ]=y[u];}if((a=fread(b,1,1024/*
,mY/R*Y"R*/,p/*U*/)/* R*/ )>/*U{ */ 2&& b/*Y*/[0]/*U*/=='P' &&4==/*"y*r/y)r\}
*/sscanf(b,d,&k,& A,& i, &r)&& ! (k-6&&k -5)&&r==255){u=A;if(n>3){/*
]&<1<6<?<m.-+1>3> +:+ .1>3+++ . -m-) -;.u+=++.1<0< <; f<o<r<(.;<([m(=)/8*/
u++;i++;}fprintf (q, d,k, u >>1,i>>1,r);u = k-5?8:4;k=3;}else
/*]>*/{(u)=/*{ p> >u >t>-]s >++(.yryr*/+( n+14>17)?8/4:8*5/
4;}for(r=i=0 ; ;){u*=6;u+= (n>3?1:0);if (y[u]&01)fputc(/*
<g-e<t.c>h.a r -(-).)8+<1. >;+i.(<)< <)+{+i.f>([180*/1*
(r),q);if(y[u ]&16)k=A;if (y[u]&2)k--;if(i/*
("^w^NAMORI; { I*/==a/*" )*/){/**/i=a=(u)*11
&255;if(1&&0>= (a= fread(b,1,1024,p))&&
")]i>(w)-;} { /i-f-(-m--M1-0.)<{"
[ 8]==59/* */ )break;i=0;}r=b[i++]
;u+=(/**>> *..</<<<)<[[;]**/+8&*
(y+u))?(10- r?4:2):(y[u] &4)?(k?2:4):2;u=y[u/*
49;7i\(w)/;} y}ru\=*ri[ ,mc]o;n}trientuu ren (
*/]-(int)'`';} fclose( p);k= +fclose( q);
/*] <*.na/m*o{ri{ d;^w^;} }^_^}}
" */ return k- -1+ /*\' '-`*/
( -/*}/ */0x01 ); {;{ }}
; /*^w^*/ ;}
Кстати, без подсветки сложно разобраться.
А, ну теперь-то всё очевидно
Прям как здесь:
habrahabr.ru/post/49209/#comment_1281911
habrahabr.ru/post/49209/#comment_1281911
Конкурс на самый запутанный код прошел, теперь начался конкурс на самую лучшую подсветку синтаксиса. Уже есть 3 претендента, но хабр явно лидирует. Спешите отправлять нам заявки!
Какой-то бессмысленный конкурс, имхо.
Я понимаю, если бы оценивалось именно хитровыкрученное использование особенностей языка (коих в сях предостаточно).
А просто по-дурацки назвать переменные и странно отформатировать код — это неинтересно. Это скорее конкурс ASCII-арта.
Наоборот, было бы круто видеть чисто и правильно отформатированные сорцы — но с нифига непонятным действом!
Я понимаю, если бы оценивалось именно хитровыкрученное использование особенностей языка (коих в сях предостаточно).
А просто по-дурацки назвать переменные и странно отформатировать код — это неинтересно. Это скорее конкурс ASCII-арта.
Наоборот, было бы круто видеть чисто и правильно отформатированные сорцы — но с нифига непонятным действом!
Тогда это был бы конкурс совсем с другой задачей.
Программа умеет уменьшать разную графику, в том числе ASCII-графику. Поскольку её исходный код тоже отформатирован в виде ASCII-графики, то она может уменьшить и свой исходный код. В результате получается другая валидная программа на C, которая может обрабатывать текст. И это тоже ещё не конец. Обработав код вторично с помощью новой программы, получается третья функциональная программа (здесь компилятор gcc уже начинает выдавать некоторые предупреждения, но всё равно сделает исполняемый файл).
Тоесть это для вас не особенность и не показатель уровня создателя? Если в этом всём вы различаете только
по-дурацки назвать переменные и странно отформатировать код
то интересно ли вам вообще на хабре находится?)
Тоесть это для вас не особенность и не показатель уровня создателя? Если в этом всём вы различаете только
по-дурацки назвать переменные и странно отформатировать код
то интересно ли вам вообще на хабре находится?)
Первый абзац — это что именно та программа делает.
Сложность выполняемой задачи (многоступенчатая генерация кода или там игра в шахматы) это круто и наверняка это дополнительное средство произвести впечатление на жюри, только к декларируемой цели конкурса (непонятный код) прямого отношения не имеет.
А я писал именно об основной цели. Тут она, безусловно, достигнута… но имхо малоинтересными и неизящными способами.
Сложность выполняемой задачи (многоступенчатая генерация кода или там игра в шахматы) это круто и наверняка это дополнительное средство произвести впечатление на жюри, только к декларируемой цели конкурса (непонятный код) прямого отношения не имеет.
А я писал именно об основной цели. Тут она, безусловно, достигнута… но имхо малоинтересными и неизящными способами.
Исходя из…
… и того, что сделали люди — вы наверное шутите. Программа победителя 3273 символа. Как по мне, тут необходимо обладать очень хорошими знаниями в Си.
Участвовать в конкурсе могут готовые программы размером меньше 4096 байт, при этом количество значимых символов, без учёта пробелов, знаков табуляции и знаков; ( ), не должно превышать 2048.
… и того, что сделали люди — вы наверное шутите. Программа победителя 3273 символа. Как по мне, тут необходимо обладать очень хорошими знаниями в Си.
Программа-победитель напомнила мне также интересный квайн, выполненный в виде игры «жизнь».
Вот код для C#:
Вот код для C#:
using System;class G /* GAME OF LIFE by Igor Ostrovsky */ {static string[]S={
"############################################################################",
"# * * #",
"# *** * #",
"# * * #",
"# * * * * #",
"# ** ** ** *** #",
"# * * ** ** #",
"# ** * * ** #",
"# ** * * ** * * #",
"# * * * #",
"# * * #",
"# ** #",
"# ** ** #",
"# ** ** * * #",
"# * * * * * * * #",
"# *** ** ** *** * * #",
"# * * * * * * **** #",
"# *** *** #",
"# #",
"# *** *** #",
"# * * * * * * * #",
"# *** ** ** *** * * * *** #",
"# * * * * * * * * * #",
"# ** ** *** * * ** * #",
"# ** ** **** * #",
"# * * #",
"############################################################################",
};static void Main(){string T="\",r=\"using System;class G /* GAME OF LIFE b"+
"y Igor Ostrovsky \"+\"*/ {static string[]S={\\n\";int p=31,i,j,b,d;for(i=0;"+
"i<27;i++){r+='\"'; for(j=0;j<76;j++){if(S[i][j]!='#'){b=0;for(d=0;d<9;d++)if"+
"(S[i-1+d/3][j-1+d%3]=='*')b++;r+=b==3 ||(S[i][j]=='*'&&b==4)?'*':' ';} else "+
"r+='#';}r+=\"\\\",\\n\";}r+=\"};static\"+\" void Main(){string T=\\\"\";fore"+
"ach(var c in T){if(c=='\\\\'||c=='\"'){r+='\\\\';p++;} r+=c; if(++p>=77){r+="+
"\"\\\"+\\n\\\"\";p=1;}} foreach(var c in T){r+=c;if(++p%79==0)r+='\\n';}Cons"+
"ole.Write(r);}}",r="using System;class G /* GAME OF LIFE by Igor Ostrovsky "+
"*/ {static string[]S={\n";int p=31,i,j,b,d;for(i=0;i<27;i++){r+='"'; for(j=0;
j<76;j++){if(S[i][j]!='#'){b=0;for(d=0;d<9;d++)if(S[i-1+d/3][j-1+d%3]=='*')b++;
r+=b==3 ||(S[i][j]=='*'&&b==4)?'*':' ';} else r+='#';}r+="\",\n";}r+="};static"
+" void Main(){string T=\"";foreach(var c in T){if(c=='\\'||c=='"'){r+='\\';p++
;} r+=c; if(++p>=77){r+="\"+\n\"";p=1;}} foreach(var c in T){r+=c;if(++p%79==0)
r+='\n';}Console.Write(r);}}
Makefile порадовал:
##################
# 133t hacker rulz
##################
#
love:
@echo 'not war?'
haste:
$(MAKE) waste
waste:
@echo 'waste'
easter_egg:
@echo you expected to mis-understand this $${RANDOM} magic
@echo chongo '' "/\\oo/\\"
@echo Readers shall not be disallowed from being unable to partly misunderstand this final echo.
@${TRUE}
А мне из предыдущих нравится вот это:
unix определена как 1
main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
unix определена как 1
По красоте кода мне больше вот этот понравился:
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#define _ float
_ CRUSH(_*LEG,int ARM,_*FINGER) {
_ GORE; for(GORE=0,--ARM; ARM>=0; --ARM)GORE+=FINGER[ARM]*ARM
[LEG]; return GORE; } _*BITE(){ _*BRAIN=calloc(sizeof(_),1<<17);int TOE
=getc(stdin),EYE,SKULL=0; while((EYE=getc(stdin))!=EOF){ ++BRAIN[(TOE<<8) +
EYE]; ++SKULL; TOE=EYE; } if(SKULL)for(TOE=0; TOE<8<<13; ++ TOE)BRAIN [TOE]/=
SKULL; return BRAIN; } _ CHEW(_*GUT,_ BONE[][1<<16]){ int GRR; for(GRR=0; GRR<
6; ++GRR){ GUT[GRR+256*256]=powf(1+expf(-CRUSH(BONE[GRR],1<<16,GUT)),-1); BONE
[6][50+GRR]=GUT[256*256+GRR]*(1.-GUT[(8<<13)+GRR]); } BONE[6][81]=1/(1 +expf(-
CRUSH(GUT+(1<<16),6,BONE[6]))); return BONE[6][82]=BONE[6][81]*(1.-BONE[6][81]
),BONE[6][81]; } _ GNAW(_ FLESH,_ LEG[][2<<15],_*EYE){ int UG,MMM; LEG[6][13]=
FLESH-CHEW(EYE,LEG); LEG[6][14]=LEG[6][ 82]*LEG[6][13]; for(UG=0; UG<6; ++UG){
LEG[6][34]=LEG[6][UG+(1<<7)-14]*LEG[6][7<<1]*LEG[6][UG]; for(MMM=0; MMM<4<<14;
++MMM)LEG [UG][MMM]+=LEG[6][34]*.3*EYE[MMM]; LEG[6][UG]+=.3*LEG[6][14
]*EYE[ 256*256+UG]; } return powf(LEG[6] [13],2); } _
**EAT( char*TOMB){ DIR*BONE = opendir( TOMB); int
BRAIN= 0; struct dirent*TOOTH; _**BODY =0; while
(BONE?(TOOTH= readdir(BONE)):0){ if( TOOTH-> d_name[0]
!=46){ char*MOAN=malloc(strlen(TOMB)+strlen(TOOTH->d_name )+1); sprintf(
MOAN, "%s%s",TOMB,TOOTH ->d_name); if(freopen(MOAN, "r",stdin)){ BODY=realloc(
BODY,sizeof(_*)*(BRAIN+1)); BRAIN ++ [BODY]=BITE(); } } } return BODY=realloc(
BODY,(1+BRAIN)*sizeof(_*)),BODY[BRAIN]=0,BODY; } int main(int GRR,char **UGH){
_ BRAINS[7][1<<16],***CORPSES; int PUS,OOZE,UG; for(srand(time(0)),PUS=0; PUS<
7; ++PUS)for(OOZE=0; OOZE<4<<14; ++OOZE)BRAINS[PUS][OOZE]=rand()/(_)RAND_MAX
-.5;fread(BRAINS,sizeof(BRAINS),1,stdin); if(*UGH[1]==45){ GRR-=2; CORPSES
=malloc( sizeof(_
**)*GRR ); for(
PUS=0; PUS<
GRR; ++ PUS)CORPSES[PUS]=EAT(UGH[2+PUS]); for(UG=
0; UG<atoi (&(UGH[1][1])); ++UG){ BRAINS[6][97]= 0; for(PUS
=0; PUS<GRR; ++PUS)for(OOZE=0; CORPSES[PUS][OOZE]; ++OOZE)BRAINS [6][
97]+=GNAW(1.-(_) PUS/(GRR-1),BRAINS,CORPSES[PUS][OOZE]); fprintf(
stderr,"%d: %f\n",UG,BRAINS[6][97]); } fwrite( BRAINS, sizeof(
BRAINS),1,stdout); } else for(UG=1; UG<GRR; ++UG)if(freopen(
UGH[UG],"r",stdin))fprintf(stderr,"%s %f\n",UGH[UG],
CHEW(BITE(),BRAINS)); return 0; }
Вообще, если пожертвовать ASCII-артом и повторной сборкой обработанной программы и отформатировать исходную программу-победителя, убрав при этом из неё комментарии и объединив некоторые строки, можно получить вполне читаемый и удобный для восприятия код, который каждый, кто хоть раз писал на чистом, без примесей, C, поймёт и сможет адаптировать под свои нужды, причём, с помощью этой программы можно так же обработать ASCII-арт исходной, не отформатированной, программы, получив тем самым валидный код новой программы.
#include<stdio.h>
int main(int n,char **m) {
FILE *p, *q;
int A, k, a, r, i;
char *d = "P%d\n%d\40%d\n%d\n\00wb+",
b[1024],
y[]="yuriyurarararayuruyuri*daijiken**akkari~n**"
"/y*u*k/riin<ty(uyr)g,aur,arr[a1r2a82*y2*/u*r{uyu}riOcyurhiyua**rrar+*arayra*="
"yuruyurwiyuriyurara'rariayuruyuriyuriyu>rarararayuruy9uriyu3riyurar_aBrMaPrOaWy^?"
"*]/f]`;hvroai<dp/f*i*s/<ii(f)a{tpguat<cahfaurh(+uf)a;f}vivn+tf/g*`*w/jmaa+i`ni(i+k[>+b+i>++b++>l[rb";
int u;
for (i = 0; i < 101; i++)
y[i * 2] ^= "~hktrvg~dmG*eoa+%squ#l2"
":(wn\"1l))v?wM353{/Y;lgcGp`vedllwudvOK`cct~[|ju {stkjalor(stwvne\"gt\"yogYURUYURI"[i] ^ y[i * 2 + 1] ^ 4;
p = (n > 1 && (m[1][0] - '-' || m[1][1] != '\0')) ? fopen(m[1], y + 298): stdin;
q = (n < 3 || !(m[2][0] - '-' || m[2][1])) ? stdout : fopen(m[2], d + 14);
if(!p || !q)
return +printf("Can not\x20open\40%s\40for\40%sing\n", m[!p ? 1 : 2], !p ? "read" : "writ");
for (a = k = u = 0; y[u]; u = 2 + u) {
y[k++] = y[u];
}
if((a = fread(b, 1, 1024, p)) > 2 && b[0] == 'P' && 4 == sscanf(b, d, &k, &A, &i, &r) && !(k - 6 && k - 5) && r == 255) {
u = A;
if (n > 3) {
u++;
i++;
}
fprintf(q, d, k, u >> 1, i >> 1, r);
u = k - 5 ? 8 : 4;
k = 3;
} else {
(u) = +(n + 14 > 17) ? 8 / 4 : 8 * 5 / 4;
}
for(r = i = 0;;) {
u *= 6;
u += (n > 3 ? 1 : 0);
if (y[u]&01)
fputc(1 * (r), q);
if (y[u] & 16)
k = A;
if (y[u] & 2)
k--;
if (i == a) {
i = a = (u) * 11 & 255;
if ( 1 && 0 >= (a = fread(b, 1, 1024, p)) && ")]i>(w)-;} { /i-f-(-m--M1-0.)<{"[8] == 59)
break;
i = 0;
}
r = b[i++];
u += (+8 & * (y + u)) ? (10 - r ? 4 : 2) : (y[u] & 4) ? (k ? 2 : 4) : 2;
u = y[u] - (int)'`';
}
fclose(p);
k = +fclose(q);
return k - -1 + (-0x01);
{
;
{}
}
;;
}
ferd.ca/obfuscation.html правда не C
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Итоги 20-го международного конкурса непонятного кода на C