014
05.08.2003, 14:29 Uhr
virtual
Sexiest Bit alive (Operator)
|
@kronos. Ich find, das geht noch. Mal Step by step: Original:
C++: |
int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\ o, world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j,i/i);}
|
Mit Umformatieren erhält man:
C++: |
/* Nur umformatiert und i lokal gemacht */ main() { int i; for(i=0; i["]<i;++i){--i;}"]; read('-'-'-', i+++"hello, world!\n", '/'/'/')); } read(j,i,p){write(j/p+p,i---j,i/i);}
|
Einige krypischte Ausdrücke kann man vereinfachen:
C++: |
/* siehe Kommentare */ main() { int i; for(i=0; /* i["..."] => "..."[i]!=0 => i<strlen("...") => i<14 */ i<14; /* '-'-'-' => '-' - '-' == 0 und '/'/'/' => '/' / '/' == 1 */ read(0, i+++"hello, world!\n", 1)); } read(j,i,p){write(j/p+p,i---j,i/i);}
|
Und dann:
C++: |
main() { int i; /* Leichte umformatierung, i+++"..." == &"..."[i], also i-tes zeichen aus text. Den Text mache ich mal zur constanten variablen. */ const char* text = "hello, world!\n";
for(i=0; i<14;) { read(0, &text[i++], 1); } } read(j,i,p){write(j/p+p,i---j,i/i);}
|
Dann nehmen wir uns mal die letzte Zeile (eine Funktion) und tun sie nach oben. Weitere Vereinfachungen inklusive
C++: |
int read(int j, const char* i, int p) { /* p ist immer 1 => j/p+p = j+1. j ist immer 0 => j+1 == 1 i/i == 1 i---j => i-- -j => i-- => i */ write(1, i, 1); }
main() { int i; const char* text = "hello, world!\n";
for(i=0; i<14;) { read(0, &text[i++], 1); } }
|
Da die Funktion jetzt ein wirklich einfacher einzeiler ist, kann man sie ganz ersetzen:
C++: |
/* Read ersetzt */ main() { int i; const char* text = "hello, world!\n";
for(i=0; i<14;) { write(1, &text[i++], 1); } }
|
Und wen das write noch stört:
C++: |
main() { int i; const char* text = "hello, world!\n";
for(i=0; i<strlen(text);) { /* write(1, &text[i++], 1) ist printf("%c", text[i]); ist putchar(text[i]) */ putchar(text[i]); } }
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) Dieser Post wurde am 05.08.2003 um 14:31 Uhr von virtual editiert. |