Obfuscated C Code Contest
Bir yarışma, C dilinde geliştirilen yazılımların yarıştığı bir yarışmadır Obfuscated C Code Contest. Bu yarışmada yazılıma gönül vermiş C dilinde bilgi birikimin sahibi olan kişilerin katıldığı 1984 yılında başlayan, bir dönem ara vermiş ardından devam eden yarışmadır.
Bu yarışmanın amacı ise oldukça ilgi çekici. Obfuscated C Code Contest’in amacı Ufak ve anlaşılmaz “anlamlı” programlar yazmak.
Bu yarışmanın her sene değişmekte olan kuralları bulunmakta. Şaşırtıcı ve ilgi çekici olan bu kodlar ilk başta ne olduğu, ne hakkında yazıldığını anlamak zor derledikten sonra ortaya çıkan sonuçlar ise oldukça şaşırtıcı.
Obfuscated C Code Contest yarışması IOCCC önderliğinde ortaya Landon Curt Noll ve Lary Bassel tarafından başlatılmış.
Obfuscated C Code Contest yarışması ASCII sanatınada destek vermekte ve kodları sanata göre yapmak, program içerisinde programı gizlemek. Anlamsız söz dizimi ise yarışmanın genel kurallarıdır.
Bu yarışmaya katılan yazılımcıların bir dahi olduğunu düşünüyorum. Hem sanat, hem de bilgi ve tecrübenin üst seviyede olduğu kod bloklarından anlaşılmakta.
Çok eğlenceli bir yarışma olduğu kesin. Bu anlamsız kod yazım yarışmasından sizlere örnekler vereceğim. Derleme imkanınız var ise bu kodları derlemenizi ve çıkan sonuçlara bakmanızı öneririm.
#include<stdio.h> /******** SpigotQuine -- usage: ./spigot [pi or e] ********/ char*s="G1%%xJ{;Q7wunmuGuu%%uu#include<stdio.h>/*Spigot_Quine*/#include<stdli" "b.h>/*_IOCCC2012_*/int*e," "i,j,k,n" ";char*q" ",*a,*d,*z,*p=%s%c;" "int" "%cmain(){a=calloc(" "1,1e4+n*2);;for(*" "a=#include<stdio.h> /******** SpigotQuine -- usage: ./spigot [pi or e] ********/ char*s="G1%%xJ{;Q7wunmuGuu%%uu#include<stdio.h>/*Spigot_Quine*/#include<stdli" "b.h>/*_IOCCC2012_*/int*e," "i,j,k,n" ";char*q" ",*a,*d,*z,*p=%s%c;" "int" "%cmain(){a=calloc(" "1,1e4+n*2);;for(*" "a=\0@3,z=d=a+n+1,j=n*8-7;" "k=0,j-1" ";j-=2){" "for(a[1]+=2;--z-a;" "*z=k%%10,k/=10)k+=j/2**z;;for(;k=k%%j*" "10+*++z,z<d;)*z=k/" "j;;\0@2,z=" "d=a+n*2,*z=1,j=0;++j<n;){for(;k=k%%" "j*10+*z,a-z;*z" "--=k/j)a+" "+;for(k=0;z-d;*a--=k%%10,k/=10)k+" "=*++z+*a\0" "@;}d+=spr" "intf(q=d-20,p,p,34,32,n+1)+2;;;;" "for(n=n*2" "0-400;k<n" ";++k%%n?j=!puts(" "d):(d[j]=" "47,d++,d[j-2" "]=42),k%%" "20<1?puts(d" "-1),a++:0" "){for(i=-1" ";i++<32;!" "*z?q[662]" "=0,z=q+207:" "*z+z[1]<6" "5?z+=11:*" "z==34?p=0" ":0)d[i]=((k/2" "0-1?275*q[" "*a+10]-8*" "q[*a+0]-8" ":128)>>(i/11+k/" "4%%5*3))&1?k" "/3*!j&&p?" "j=34:(j=" "i+1,*z++):32;k/3*" "j--&&p?d[z--,j]=3" "4:0;}}int" "*y,n=%d;/*..~",*f="nnLa5~z23~|22t$q(s82r&q(s82q'q(s8;q(s8;q(s8:" "r(s8:r(s8:" "q)s89r)sLr#t+" "sLx,uJw-yGu/wnnnU",*g="nnLa<z::t$u88t(u67t*u57s,t56t,t56~v56" "tF6tF6tF8t1p" "Nu/qOv+rS}Xxnng";int main(int m,char**v){char a[2012],b[2012 ],*p=a,*r=m>1 &&*v[1]=='e'?g:f,*q=b,*t=r;;sprintf(a,"%s%s%s",s,r==g?s+281: s+168,s+386); sprintf(b,a+22,a,34,32,24);for(sprintf(a,"%.33s/*%.28s*/%.3" "3s/*%.28s*/%" ".33s\"%s*/",b,b+66,b+33,b+76,b+66,b+99);*r;r++){;for(m=0;m++ <(*r-34)%77;*q++=*r>111?32:*p++)(q-b)%66<1?*q++=10:0;*r-110&&*r-126&&r-t<(t-g? 62:45)?*q++=34,((q-b)%66<1?*q++=10,*q++=34:0):0;}*q=0;puts(b+1);}/*IOCCC2012*/@3,z=d=a+n+1,j=n*8-7;" "k=0,j-1" ";j-=2){" "for(a[1]+=2;--z-a;" "*z=k%%10,k/=10)k+=j/2**z;;for(;k=k%%j*" "10+*++z,z<d;)*z=k/" "j;;#include<stdio.h> /******** SpigotQuine -- usage: ./spigot [pi or e] ********/ char*s="G1%%xJ{;Q7wunmuGuu%%uu#include<stdio.h>/*Spigot_Quine*/#include<stdli" "b.h>/*_IOCCC2012_*/int*e," "i,j,k,n" ";char*q" ",*a,*d,*z,*p=%s%c;" "int" "%cmain(){a=calloc(" "1,1e4+n*2);;for(*" "a=\0@3,z=d=a+n+1,j=n*8-7;" "k=0,j-1" ";j-=2){" "for(a[1]+=2;--z-a;" "*z=k%%10,k/=10)k+=j/2**z;;for(;k=k%%j*" "10+*++z,z<d;)*z=k/" "j;;\0@2,z=" "d=a+n*2,*z=1,j=0;++j<n;){for(;k=k%%" "j*10+*z,a-z;*z" "--=k/j)a+" "+;for(k=0;z-d;*a--=k%%10,k/=10)k+" "=*++z+*a\0" "@;}d+=spr" "intf(q=d-20,p,p,34,32,n+1)+2;;;;" "for(n=n*2" "0-400;k<n" ";++k%%n?j=!puts(" "d):(d[j]=" "47,d++,d[j-2" "]=42),k%%" "20<1?puts(d" "-1),a++:0" "){for(i=-1" ";i++<32;!" "*z?q[662]" "=0,z=q+207:" "*z+z[1]<6" "5?z+=11:*" "z==34?p=0" ":0)d[i]=((k/2" "0-1?275*q[" "*a+10]-8*" "q[*a+0]-8" ":128)>>(i/11+k/" "4%%5*3))&1?k" "/3*!j&&p?" "j=34:(j=" "i+1,*z++):32;k/3*" "j--&&p?d[z--,j]=3" "4:0;}}int" "*y,n=%d;/*..~",*f="nnLa5~z23~|22t$q(s82r&q(s82q'q(s8;q(s8;q(s8:" "r(s8:r(s8:" "q)s89r)sLr#t+" "sLx,uJw-yGu/wnnnU",*g="nnLa<z::t$u88t(u67t*u57s,t56t,t56~v56" "tF6tF6tF8t1p" "Nu/qOv+rS}Xxnng";int main(int m,char**v){char a[2012],b[2012 ],*p=a,*r=m>1 &&*v[1]=='e'?g:f,*q=b,*t=r;;sprintf(a,"%s%s%s",s,r==g?s+281: s+168,s+386); sprintf(b,a+22,a,34,32,24);for(sprintf(a,"%.33s/*%.28s*/%.3" "3s/*%.28s*/%" ".33s\"%s*/",b,b+66,b+33,b+76,b+66,b+99);*r;r++){;for(m=0;m++ <(*r-34)%77;*q++=*r>111?32:*p++)(q-b)%66<1?*q++=10:0;*r-110&&*r-126&&r-t<(t-g? 62:45)?*q++=34,((q-b)%66<1?*q++=10,*q++=34:0):0;}*q=0;puts(b+1);}/*IOCCC2012*/@2,z=" "d=a+n*2,*z=1,j=0;++j<n;){for(;k=k%%" "j*10+*z,a-z;*z" "--=k/j)a+" "+;for(k=0;z-d;*a--=k%%10,k/=10)k+" "=*++z+*a#include<stdio.h> /******** SpigotQuine -- usage: ./spigot [pi or e] ********/ char*s="G1%%xJ{;Q7wunmuGuu%%uu#include<stdio.h>/*Spigot_Quine*/#include<stdli" "b.h>/*_IOCCC2012_*/int*e," "i,j,k,n" ";char*q" ",*a,*d,*z,*p=%s%c;" "int" "%cmain(){a=calloc(" "1,1e4+n*2);;for(*" "a=\0@3,z=d=a+n+1,j=n*8-7;" "k=0,j-1" ";j-=2){" "for(a[1]+=2;--z-a;" "*z=k%%10,k/=10)k+=j/2**z;;for(;k=k%%j*" "10+*++z,z<d;)*z=k/" "j;;\0@2,z=" "d=a+n*2,*z=1,j=0;++j<n;){for(;k=k%%" "j*10+*z,a-z;*z" "--=k/j)a+" "+;for(k=0;z-d;*a--=k%%10,k/=10)k+" "=*++z+*a\0" "@;}d+=spr" "intf(q=d-20,p,p,34,32,n+1)+2;;;;" "for(n=n*2" "0-400;k<n" ";++k%%n?j=!puts(" "d):(d[j]=" "47,d++,d[j-2" "]=42),k%%" "20<1?puts(d" "-1),a++:0" "){for(i=-1" ";i++<32;!" "*z?q[662]" "=0,z=q+207:" "*z+z[1]<6" "5?z+=11:*" "z==34?p=0" ":0)d[i]=((k/2" "0-1?275*q[" "*a+10]-8*" "q[*a+0]-8" ":128)>>(i/11+k/" "4%%5*3))&1?k" "/3*!j&&p?" "j=34:(j=" "i+1,*z++):32;k/3*" "j--&&p?d[z--,j]=3" "4:0;}}int" "*y,n=%d;/*..~",*f="nnLa5~z23~|22t$q(s82r&q(s82q'q(s8;q(s8;q(s8:" "r(s8:r(s8:" "q)s89r)sLr#t+" "sLx,uJw-yGu/wnnnU",*g="nnLa<z::t$u88t(u67t*u57s,t56t,t56~v56" "tF6tF6tF8t1p" "Nu/qOv+rS}Xxnng";int main(int m,char**v){char a[2012],b[2012 ],*p=a,*r=m>1 &&*v[1]=='e'?g:f,*q=b,*t=r;;sprintf(a,"%s%s%s",s,r==g?s+281: s+168,s+386); sprintf(b,a+22,a,34,32,24);for(sprintf(a,"%.33s/*%.28s*/%.3" "3s/*%.28s*/%" ".33s\"%s*/",b,b+66,b+33,b+76,b+66,b+99);*r;r++){;for(m=0;m++ <(*r-34)%77;*q++=*r>111?32:*p++)(q-b)%66<1?*q++=10:0;*r-110&&*r-126&&r-t<(t-g? 62:45)?*q++=34,((q-b)%66<1?*q++=10,*q++=34:0):0;}*q=0;puts(b+1);}/*IOCCC2012*/" "@;}d+=spr" "intf(q=d-20,p,p,34,32,n+1)+2;;;;" "for(n=n*2" "0-400;k<n" ";++k%%n?j=!puts(" "d):(d[j]=" "47,d++,d[j-2" "]=42),k%%" "20<1?puts(d" "-1),a++:0" "){for(i=-1" ";i++<32;!" "*z?q[662]" "=0,z=q+207:" "*z+z[1]<6" "5?z+=11:*" "z==34?p=0" ":0)d[i]=((k/2" "0-1?275*q[" "*a+10]-8*" "q[*a+0]-8" ":128)>>(i/11+k/" "4%%5*3))&1?k" "/3*!j&&p?" "j=34:(j=" "i+1,*z++):32;k/3*" "j--&&p?d[z--,j]=3" "4:0;}}int" "*y,n=%d;/*..~",*f="nnLa5~z23~|22t$q(s82r&q(s82q'q(s8;q(s8;q(s8:" "r(s8:r(s8:" "q)s89r)sLr#t+" "sLx,uJw-yGu/wnnnU",*g="nnLa<z::t$u88t(u67t*u57s,t56t,t56~v56" "tF6tF6tF8t1p" "Nu/qOv+rS}Xxnng";int main(int m,char**v){char a[2012],b[2012 ],*p=a,*r=m>1 &&*v[1]=='e'?g:f,*q=b,*t=r;;sprintf(a,"%s%s%s",s,r==g?s+281: s+168,s+386); sprintf(b,a+22,a,34,32,24);for(sprintf(a,"%.33s/*%.28s*/%.3" "3s/*%.28s*/%" ".33s\"%s*/",b,b+66,b+33,b+76,b+66,b+99);*r;r++){;for(m=0;m++ <(*r-34)%77;*q++=*r>111?32:*p++)(q-b)%66<1?*q++=10:0;*r-110&&*r-126&&r-t<(t-g? 62:45)?*q++=34,((q-b)%66<1?*q++=10,*q++=34:0):0;}*q=0;puts(b+1);}/*IOCCC2012*/
2012 yılında endoh2 adlı yaptığı ve ödül alan programı.
#define \ D(s)"<<"#s">>" #define q(s)p(#s) #define S " endobj " #define Y "endstream"S #include <stdio.h> #define o(s) b[s]=_;\ p("%u 0 obj",s); #define E for (c=d;c < 123;c++) #define DANCE "trailer "D\ (/Root 3 0 R /Size %d) "\nstartxref %u %%%%EOF\n*/" #define p(s, ...) _+=printf(s, ##__VA_ARGS__) #define C "<</Type/Page /Parent %d %d R /Resources <<\ /ProcSet[ /PDF/Text]/Font <</U"D(/Subtype/Type1/BaseFont\ /Courier) " /T<</Subtype/Type3 /FontBBox[0 0 10 10]/FontMatrix[\ %f 0 0 %f 0 0]/FirstChar %d/LastChar %d/Encoding<</Differences[%d" typedef int N;typedef char*Nyan;typedef char A;N a,b[64],d=65,_,v [32]={84,0,64,282,90,74,330,85,93,173,167,176,80,208,81,13,7,87 ,160,346,32,128,170,218,16,26}; Nyan w[]={"+*-(,&-&","+*,&-&" ,"+*.&/&","+*/*/+","+*())'('" ,"+**&)&","+*(&'&","+*'*'+", "","+,./","+,-,./","+--,+*" ,"","+,(/","+,),(/","+-),+*" ,"10 0 d0 ","8 7 2 2 re " ,"+*+.'`'@'mi +/+/(mi"};Nyan nyan(Nyan _,N y,A n){ N g=v[~-y%32];Nyan s=w[g>>n&3|n*2]; for(a=0;*_=*s++; a++,_++,*_++=32) {*_+=*_-32?10:0; if(a%2&&*_/16==3 ){if(g>>8)*_=105-*_; _++;*_++=32;*_=~-a&&a-13 ?108:109;}}return n?n-9?nyan (_,y,n-2):_:nyan(_+=~y&' '?sprintf (_,17[w]):0,y,9);}N main(N c){A e[256]; p("/*%%PDF-1.3%%*/")-2;q(#include<stdio.h>\n); q(#define o *_++&& *_-41\n#define);p(" endstream ");q (main(){for(;*_++; *_-40?:putchar(o?*_:o?10:41));\n) ;q(#define endobj return 0;}\n);q(typedef int ET;/) ;q(*);o(1)*b=~(p(D (/Length 2 0 R)"stream\n")) ;for(p("BT 12 818" " Td/%c 12 Tf 12 TL%%%c/" "static char*_=\"" " \\\n",7[v],*v/2);c= getchar(),~c;c-10? p("/%c 12 Tf(\\%o)" "Tj",v[~-c%' '<25[ v]&&!~-(~-c/'@')?0 :7],c):(p("()'"))) ;p("%%\";\nET ");* b-=~_;p(Y"/*");E{a =nyan(e+sprintf(e, 16[w]),c,6)-e;o(c- 59)p(D(/Length %d) "stream\n%s"Y,a,e) ;}o(2)p(" %u"S,*b); o(3)p(D(/Pages 4 0 R)S);o(4)p(D(/Count 1/MediaBox[0 0 595 842]/Kids[5 0 R])S) ;o(5)p(C,4,0,6e-2, 6e-2f,d,122,d);E p( "/%c",~-c/6+~14?c: d);q(]>>/CharProcs<<) ;E if(~-c/6+~14)p( "/%c %d 0 R",c,c+~58); for(q(>>/Widths[), c=59;--c;p(" 10"));a=p ("]>>>>>>/Contents 1 0 R>>"S);for(p("xref\ 0 %d ",--d);c<d;p("%010u\ %05d n ",*(c+++b),NULL)); return!(p(DANCE,d,a));}
2012 yılında 2012 yılında endoh2 adlı yaptığı ve ödül alan programı.
Daha bir çok örnek paylaşabilmem mümkün ama siz http://www.ioccc.org sitesine girip daha detaylı ve kazanmış örneklerine bakmanız mümkün.
Ağzım açık kaldı , nedir o ya 🙂 .
endoh2 nin derledim o musluklu koddan pi nasıl çıktı 🙂
#include/*Spigot_Quine*//*int*e,i,j,k,n;char*q,*a,*d,**/
#include/*_IOCCC2012_*//*k,n;char*q,*a,*d,*z,*p=G1%%x*/
int*e,i,j,k,n;char*q,*a,*d,*z,*p=”G1%%xJ{;Q7wunmuGuu%%uu#include”
“/*Spigot_Quine*/#include/*_IOCCC2012_*/int*e”
“,i,j,k,n;char*q,*a,” “*d,*z,*p=%s%c;in”
“t%cmain(){a=callo” “c(1,1e4+n*2);;fo”
“r(*a=3,z=d=a+n+1” “,j” “=n*8-7” “;k=0,j-1;j-=2){for(a[1”
“]+=2;–z-a;*z=k%” “%10,” “k/=10)” “k+=j/2**z;;for(;k=k%%j”
“*10+*++z,z<d;)*z" "=k/j;" ";;}d+=" "sprintf(q=d-20,p,p,34,"
"32,n+1)+2;;;;for(n=n*20-4" "00;k<n" ";++k%%n?j=!puts(d):(d["
"j]=47,d++,d[j-2]=42),k%%2" "0<1?pu" "ts(d-1),a++:0){for(i=-"
"1;i++<32;!*z?q[662]=0,z=" "q+207:" "*z+z[1]”
“>(i/11+k/4%%5*3))&1?k/3*” “!j&&p?j” “=34:(j=i+1,*z++):32;k/”
“3*j–&&p?d[z–,j]=34:0;” “}}int*y” “,n=%d;/*..~”;int main()
{a=calloc(1,1e4+n*2 ) ;;for(*a= 3,z=d=a+n+1,j=n*8-7;k=0,
j-1;j-=2){for(a[1] +=2;–z-a; *z=k%10,k/=10)k+=j/2**
z;;for(;k=k%j*10+* ++z,z<d;)*z =k/j;;;}d+=sprintf
(q=d-20,p,p,34,32,n +1)+2;;;;for( n=n*20-400;k<n;++k%
n?j=!puts(d):(d[j]=47,d++,d[j-2]=42),k%20<1?puts(d-1),a++:0){for(
i=-1;i++<32;!*z?q[662]=0,z=q+207:*z+z[1]>(i/11+k/4%5*3))&1?k/3*
!j&&p?j=34:(j=i+1,*z++):32;k/3*j–&&p?d[z–,j]=34:0;}}int*y,n=24;
——————
(program exited with code: 238)
Press return to continue