PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Euer "dreckigster" Code


Roman
2004-06-02, 16:01:46
Beim Lesen des Threads 3 Fragen zum Programmieren (http://www.forum-3dcenter.org/vbulletin/showthread.php?threadid=146205) fiel mir ein, dass es vor etwa 15 bis 20 Jahren mal einen Wettbewerb in einer Computerzeitschrift gab, wer in 1024 Zeichen (Hochsprache, kein Assembler oder Bytecode! Es ist egal, wie groß die ausführbare Datei dann wird.) das tollste Programm schreiben konnte. Das ergab dann z.B. solche Konstrukte:
#include <iostream>
#define x std::cout << "\n" <<
#define i int
#define f for
main(){i y;f(y=0;y<100;y++)x y;f(y=100;y>0;y--)x y;}Kein besonders tolles Beispiel, aber es soll ja nur die Vorgehensweise verdeutlichen. Da waren dann echte Künstler am Werk, die Fraktalgeneratoren mit graphischer Ausgabe da reinpressten.

Was habt ihr denn so für komprimierten, fast unlesbaren, aber voll funktionsfähigen Code schon geschrieben?

ScottManDeath
2004-06-02, 23:27:26
Original geschrieben von Roman
Was habt ihr denn so für komprimierten, fast unlesbaren, aber voll funktionsfähigen Code schon geschrieben?

:kotz:, sowas tut man doch nicht ;D

Dann lieber eleganten und ästhetischen Code, wenn man den liest kann man sich was abgucken.

harlekin
2004-06-03, 00:40:05
Diesen code hab ich gottseidank schon lange vernichtet
und aus meinem Gedächnismuten....

aber ich kann mich an ein C Programm erinnern,
mit mehreren Funktionen ohne Rückgabewer und
ohne Parameter, welches durch zufall funktioniert hat
(übrigens war es nicht von mir) und zwar anscheinend aus dem
Grund, weil es immer die gleichen Variablen (lokal) mit den
gleichen Namen in der gleichen Reichenfolge waren.....

den Rest kann sich jeder denken (compiler)

Abe Ghiran
2004-06-03, 00:51:49
Das stammt (leider ?) nicht von mir, ich finde es aber recht lustig und es passt sicherlich ganz gut hier rein. Gefunden habe ich es im Vorwort von Game Programming Gems 3, gut möglich daß das auch irgendwo im Netz zu finden ist.

#include <stdio.h>

int main(int k){

float i, j, r, x, y = -16.0f;

while(puts(""), y++ < 15)
for(x=0; x++ < 79; putchar(" .:-;!/>)|&IH%*#"[k&15]))
for(i=k=r=0; j=r*r-i*i-2+x/25, i=2*r*i+y/10, j*j+i*i<11&&k++<111; r=j);
}


Grüße, Jan

Gast
2004-06-03, 12:40:23
Soll ich hier jetzt meine aktuellen Projekte reinschreiben? ;) *gg*

RMC
2004-06-03, 12:45:51
Es gibt auch Programmiertechniken, die extra darauf aus sind, Code so unleserlich zu schreiben, dass er entweder äußerst schwer zu verstehen ist oder ihn keiner außer den Programmierern selbst lesen kann.

Vorallem was Sicherheit etc. angeht, es soll ja nicht gleich jeder wissen was bestimmte Programmteile erledigen.

Gast_on
2004-06-03, 13:56:10
Meinst du solche versteckten Botschaften ;)


#include <stdio.h>

int main(int t,int _,char *a)
{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86, 0, a+1 )+a)):1,t<_?main(t+1, _, a ):3,main ( -94, -27+t, a
)&&t == 2 ?_<13 ?main ( 2, _+1, "%s %d %d\n" ):9:16:t<0?t<-72?main(_,
t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+\
,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/\
+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){n\
l]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:t<-50?_==*a ?putchar(a[31]):main(-65,_,a+1):main((*a == '/')+t,_,a\
+1 ):0<t?main ( 2, 2 , "%s"):*a=='/'||main(0,main(-61,*a, "!ek;dc \
i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}


Hab ich mal im Heise-Forum gefunden.

Gruß

Blumentopf
2004-06-03, 14:28:54
Auch nicht von mir, aber vollkommen unzumutbar:
(Assembler: WinAPI Proc)


D1gPr0c PROC hWind:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
dr4g e4x, [uMsg]

ch3ck0r e4x, WM_COMMAND
jne wmCl0se
dr4g e4x, [wParam]

ch3ck0r ax, IDCANCEL
je qu17

ch3ck0r ax, IDEXIT
jne notQu17
qu17:
dew MessageBox, z1lch, addie b14h, addie t1tl3, MB_YESNO
ch3ck0r e4x, IDNO
je endD1gPr0c
l34p ExitProcess

notQu17:
ch3ck0r ax, IDCONVERT
jne endD1gPr0c

c0nv3r70r

X0r e4x, e4x
b4ck

wmCl0se:
ch3ck0r e4x, WM_CLOSE
jne endD1gPr0c

l34p ExitProcess

endD1gPr0c:
X0r e4x, e4x
b4ck
D1gPr0c sh4ddup

HellHorse
2004-06-03, 14:56:28
Es gibt ja so was:
http://www.ioccc.org/
oder auch das
http://remus.rutgers.edu/~rhoads/Obfuscated_C/obfuscate.html
Besonders cool

#define _ F-->00 || F-OO--;
long F=00,OO=00;
main(){F_OO();printf("%1.3f\n", 4.*-F/OO/OO);}F_OO()
{
_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_
}

govou
2004-06-03, 15:23:57
Häaate nich gedacht, dass die Teile funzen.
Das Ergebnis von dem:

#include <stdio.h>

int main(int k){

float i, j, r, x, y = -16.0f;

while(puts(""), y++ < 15)
for(x=0; x++ < 79; putchar(" .:-;!/> )|&IH%*#"[k&15]))
for(i=k=r=0; j=r*r-i*i-2+x/25, i=2*r*i+y/10, j*j+i*i<11&&k++<111; r=j);
}

find ich besonders ql.

Roman
2004-06-03, 15:38:57
Original geschrieben von HellHorse
Es gibt ja so was:
http://www.ioccc.org/
oder auch das
http://remus.rutgers.edu/~rhoads/Obfuscated_C/obfuscate.html
Ich kann gar nicht aufhören, den Code zu durchstöbern. :D

Manche sind ja richtige Kunstwerke:
#include <stdio.h>
int l;int main(int o,char **O,
int I){char c,*D=O[1];if(o>0){
for(l=0;D[l ];D[l
++]-=10){D [l++]-=120;D[l]-=
110;while (!main(0,O,l))D[l]
+= 20; putchar((D[l]+1032)
/20 ) ;}putchar(10);}else{
c=o+ (D[I]+82)%10-(I>l/2)*
(D[I-l+I]+72)/10-9;D[I]+=I<0?0
:!(o=main(c/10,O,I-1))*((c+999
)%10-(D[I]+92)%10);}return o;}

Xmas
2004-06-03, 18:04:40
Original geschrieben von Abe Ghiran
Gefunden habe ich es im Vorwort von Game Programming Gems 3, gut möglich daß das auch irgendwo im Netz zu finden ist.

Hier z.B.
http://mrl.nyu.edu/~perlin/