(ANSI C) for(;P("\n"),R--; P("|")) for(e=C; e--;P("_"+(*u++/8)%2))P("| &q



  • for(;P("\n"),R--;P("|"))for(e=C;e--;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
    

    Hat dieser Ausdruck eine besondere Bedeutung, dass gerade er für den wohlbekannten Aprilscherz ausgewählt wurde?



  • Drehs mal auf die Seite, vielleicht ist es ja ein langer Smiley



  • Hallo,
    ist auf jeden Fall so kein Standard-C++. Zumindest sehe ich keine Definitionen für die unterschiedlichen Identifier.



  • ja und es steht auch nicht innerhalb einer Funktion ...

    Mal im Ernst: Das ist nicht nur irgendwie zusammengehakt. Für sinnvolle (ziemlich simple) Definitionen der vorkommenden Variablen und Funktionen kommt da auch was vernünftiges raus. Ich hab das vor Jahrem mal probiert, vielleicht find ichs ja wieder ... P ist jedenfalls printf, R muß passend vorbelegt werden, das u-Array auch.



  • d.h. R, C und u sind unbekannt.
    Wäre echt nett, wenn du es finden würdest 🙂



  • schau mal hier: http://www.cs.man.ac.uk/~pjj/cs1011/hoax

    Uh, the line

    for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);

    does *not* compile cleanly on my system (Sparc). The problem is with the
    operators "R-" and "e-". Change them to "R--" and "e--" and it will compile
    successfully, but drop core when it runs. Then initialize u, C and R to
    something reasonable (like "the address of an array of 100 ints initialized to
    0', "10" and "10", respectively), and define P() to be printf(), and you'll get
    output that looks something like this:

    | _| _| _| _| _| _| _| _| _| _|
    | _| _| _| _| _| _| _| _| _| _|
    | _| _| _| _| _| _| _| _| _| _|
    | _| _| _| _| _| _| _| _| _| _|
    | _| _| _| _| _| _| _| _| _| _|
    | _| _| _| _| _| _| _| _| _| _|
    | _| _| _| _| _| _| _| _| _| _|
    | _| _| _| _| _| _| _| _| _| _|
    | _| _| _| _| _| _| _| _| _| _|
    | _| _| _| _| _| _| _| _| _| _|

    Make the initial values of the array random, and you get something that
    looks like a maze:

    _ _ _ | _| _| _| |
    _| | | | _ _ _ _ |
    | _| _| _| _| | |
    | | _ _ _ _ | _| _| _| |
    _| | | | _ _ _|
    _ | _| _| _| _|
    | | | | _ _ _ _ | _| _|
    | _| _| | | | _|
    _ _ _ | _| _| _| |
    _| | | | _ _ _ _ |

    Cute, yes. Useful? You tell me...

    EDIT: ursprünglich vom IOCCC stammend?

    #define P(X)j=write(1,X,1)
    #define C 39
    int M[5000]={2},*u=M,N[5000],R=22,a[4],l[]={0,-1,C-1,-1},m[]={1,-C,-1,C},*b=N,
    *d=N,c,e,f,g,i,j,k,s;main(){for(M[i=C*R-1]=24;f|d>=b;){c=M[g=i];i=e;for(s=f=0;
    s<4;s++)if((k=m[s]+g)>=0&&k<C*R&&l[s]!=k%C&&(!M[k]||!j&&c>=16!=M[k]>=16))a[f++
    ]=s;if(f){f=M[e=m[s=a[rand()/(1+2147483647/f)]]+g];j=j<f?f:j;f+=c&-16*!j;M[g]=
    c|1<<s;M[*d++=e]=f|1<<(s+2)%4;}else e=d>b++?b[-1]:e;}P(" ");for(s=C;--s;P("_")
    )P(" ");for(;P("\n"),R--;P("|"))for(e=C;e--;P("_ "+(*u++/8)%2))P("| "+(*u/4)%2
    );}
    

    [ Dieser Beitrag wurde am 11.04.2003 um 11:13 Uhr von Norondion editiert. ]



  • ja und es steht auch nicht innerhalb einer Funktion ...

    Glaub mir, wenn das das einzige Problem wäre, hätte ich nicht geantwortet.
    Einen Einschluss des Codes in eine Funktion kann ich mir zur Not noch denken. Aber wie bitte soll man eine Aussage über den Code machen, wenn man *keinen* Hinweis auf die Bedeutung von P, R, C usw. hat?

    Vielleicht liegt's auch nur wieder an mir. Wäre für eine Aufklärung also sehr dankbar.



  • #define P(X)j=write(1,X,1)
    #define C 39
    int M[5000]={2},*u=M,N[5000],R=22,a[4],l[]={0,-1,C-1,-1},m[]={1,-C,-1,C},*b=N,
    *d=N,c,e,f,g,i,j,k,s;main(){for(M[i=C*R-1]=24;f|d>=b;){c=M[g=i];i=e;for(s=f=0;
    s<4;s++)if((k=m[s]+g)>=0&&k<CR&&l[s]!=k%C&&(!M[k]||!j&&c>=16!=M[k]>=16))a[f++
    ]=s;if(f){f=M[e=m[s=a[rand()/(1+2147483647/f)]]+g];j=j<f?f:j;f+=c&-16
    !j;M[g]=
    c|1<<s;M[*d++=e]=f|1<<(s+2)%4;}else e=d>b++?b[-1]:e;}P(" ");for(s=C;--s;P("")
    )P(" ");for(;P("\n"),R--;P("|"))for(e=C;e--;P("
    "+(*u++/8)%2))P("| "+(*u/4)%2
    );}

    So. Und das ist mit Sicherheit kein legales C++-Programm. Da verwette ich meinen Hintern drauf.

    [ Dieser Beitrag wurde am 11.04.2003 um 11:16 Uhr von HumeSikkins editiert. ]



  • Gibt es beim IOCCC überhaupt ein "legales" C++-Programm?



  • Es heißt IOCCC und nicht IOC++CC
    International Obfuscated C Code Contest

    deswegen wirds kaum legale C++ programme geben - wenn es eins gibt, dann ist das reiner zufall.

    @Hume:
    der code ist legales C (K&R C)
    AFAIK wird nur K&R C im IOCCC verwendet, denn C89 legt ja schon einige beschränkungen auf...



  • Hallo,
    na dann verschiebe ich den Thread doch, in Ermangelung eine K&R-C-Forums, einfach mal nach ANSI-C.


Anmelden zum Antworten