http://guliqun1983.blog.163.com/blog/static/501116852011730535314/
全部博文(120)
分类: C/C++
2012-02-20 13:25:45
Quine 在计算机中指的是把自身代码输出的程序,非常有趣。其实这种程序没有唯一。其实有很多种。下面就列出来几种。
1、
main(){char *c="main(){char *c=%c%s%c;printf(c,34,c,34);}";printf(c,3
4,c,34);}
2、
p="p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}
3、
main(){char q=34,n=10,*a="main(){char q=34,n=10,*a=%c%s%c;printf(a,q,a,q,n);}%c";printf(a,q,a,q,n);}
4、
main(){char*a="main(){char*a=%c%s%c;int b='%c';printf(a,b,a,b,b);}";int b='"';printf(a,b,a,b,b);}
5、
main(a,b){a="main(a,b){a=%c%s%c;b='%c';printf(a,b,a,b,b);}";b='"';printf(a,b,a,b,b);}
6、
main(a){printf(a="main(a){printf(a=%c%s%c,34,a,34);}",34,a,34);}
7、
char *p="char *p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}
8、
main(a){a="main(a){a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);}
9、
char f[] = "char f[] =%c%c%s%c;%cmain() {printf(f,10,34,f,34,10,10);}%c";
main() {printf(f,10,34,f,34,10,10);}
10、
#include
main(){char*c="\\\"#include
;printf(c+2,c[102],c[1],*c,*c,c,*c,c[1]);exit(0);}\n";printf(c+2,c[10
2],c[1],*c,*c,c,*c,c[1]);exit(0);}
11、
char *a="\\\"char *a=%c%.1s%.1s%.71s%.1sn%c;main(){printf(a+2,a[1],a,a,a,a,a[1]);}\n";main(){printf(a+2,a[1],a,a,a,a,a[1]);}
12、
#define T(a) main(){printf(a,#a);}
T("#define T(a) main(){printf(a,#a);}\nT(%s)")
13、
#define n(v,w) v(#w"\nn("#v","#w")");}
n(main(){puts,#define n(v,w) v(#w"\nn("#v","#w")");})
14、
#define X(Y) main(){printf("#define X(Y) %s\nX(%s)\n",#Y,#Y);}
X(main(){printf("#define X(Y) %s\nX(%s)\n",#Y,#Y);})
15、
#define q(k)main(){puts(#k"\nq("#k")");}
q(#define q(k)main(){puts(#k"\nq("#k")");})
16、
#define q(k)main(){return!puts(#k"\nq("#k")");}
q(#define q(k)main(){return!puts(#k"\nq("#k")");})
17、
#define Z(q)q,#q
main()printf(Z("#define Z(q)q,#q\nmain()printf(Z(%s));\n"));
18、
char *f="char *f=%c%s%c;%c#define Q '%c'%c#define N '%cn'%c#define B '%c%c'%c#include
#define Q '"'
#define N '\n'
#define B '\\'
#include
void main(){printf(f,Q,f,Q,N,Q,N,B,N,B,B,N,N,N);}
19、
char a[] = "int main(){ printf(b,34,a,34,10,34,b,34,10,10,a,10); }";
char b[] = "char a[] = %c%s%c;%cchar b[] = %c%s%c;%c%c%s%c";
int main(){ printf(b,34,a,34,10,34,b,34,10,10,a,10); }
20、
char *s="rfns-.%?uwnsyk-'hmfw%/xBa'*xa'@as'1x.@|mnqj-/x.uwnsyk-'*h'1/x002:.@?";
main() {
printf("char *s=\"%s\";\n",s);
while(*s)printf("%c",*s++-5);
}
21、
#include
int main(void){char n='\n';char b='\\';char q='"';char*p="#include
22、
#include
char a[] = "\";\nmain() {char *b=a;printf(\"#include
main() {char *b=a;printf("#include
for(;*b;b++) {switch(*b){case '\n': printf("\\n"); break;
case '\\': case '\"': putchar('\\'); default: putchar(*b);}} printf(a);}
23、
#define s "#define s %c%s%c%c#include
void main() { printf("#define s %c%s%c%c#include
24、
void p(char *s){char *t;printf("%s(\"",s);for(t=s; *t!=0; t++)switch(*t){case '\\':case '\"':case'\'':putchar('\\');default:putchar(*t);}printf("\");}");}void main(){p("void p(char *s){char *t;printf(\"%s(\\\"\",s);for(t=s; *t!=0; t++)switch(*t){case \'\\\\\':case \'\\\"\':case\'\\\'\':putchar(\'\\\\\');default:putchar(*t);}printf(\"\\\");}\");}void main(){p");}
25、
char *x="\";\nmain ()\n{ char *s;\n printf (\"char *x=\\\"\");\n for(s=x;*s;s++)\n { printf
(*s=='\\\\'?\"\\\\\\\\\":*s=='\\\"'?\"\\\\\\\"\":*s=='\\n'?\"\\\\n\":\"%c\", *s); }\n printf (\"%s\", x);\n}\n";
main ()
{ char *s;
printf ("char *x=\"");
for(s=x;*s;s++)
{ printf (*s=='\\'?"\\\\":*s=='\"'?"\\\"":*s=='\n'?"\\n":"%c", *s); } printf ("%s", x);
}
26、
char x[]=" main() { int i; putchar(99); putchar(104); putchar(97); putchar(114); putchar(32);
putchar(120); putchar(91); putchar(93); putchar(61); putchar(34); for(i=0; i
putchar(91); putchar(93); putchar(61); putchar(34); for(i=0; i
27、
main(){char*s="main(){char*s=%c%s%c;%cprintf(%c%s%c,34,s,34,10,34,s,34,10);}%c";
printf("main(){char*s=%c%s%c;%cprintf(%c%s%c,34,s,34,10,34,s,34,10);}%c",34,s,34,10,34,s,34,10);}
28、
#define p(s) printf("%s\n",s);
#define q(v,s) printf("r(%s,%s)\n",#v,s);
#define r(v,s) char*v=#s;
#define m main(){p(x)p(y)p(z)p(n)q(x,x)q(y,y)q(z,z)q(n,n)p("m")}
r(x,#define p(s) printf("%s\n",s);)
r(y,#define q(v,s) printf("r(%s,%s)\n",#v,s);)
r(z,#define r(v,s) char*v=#s;)
r(n,#define m main(){p(x)p(y)p(z)p(n)q(x,x)q(y,y)q(z,z)q(n,n)p("m")}) m
29、
#include
main()
{char* list="
printf(%c#include %cn%c);
printf(%cmain()%cn%c);
printf(%c{%c);
printf(%cchar* list=%cc%c,34);
printf(%c%cs%c, list);
printf(%c%cc;%c,34);
printf(list,34,92,34,34,92,34,34,34,34,37,34,34,37,34,34,37,34);}
";
printf("#include \n");
printf("main()\n");
printf("{");
printf("char* list=%c",34);
printf("%s", list);
printf("%c;",34);
printf(list,34,92,34,34,92,34,34,34,34,37,34,34,37,34,34,37,34);}
30、
#include
#define d "\\"
#define c "\n"
#define b "\""
#define a "#include
main(){printf(a,c,b,d,d,b,c,b,d,b,c,b,d,b,b,c,b,a,b,c,c);}
31、
char*p="char*p=15415,4*x=52?33/n33/55,c,n,*q;main()33
32、
char *f="%c%s%c,";
#include
char*x[]={
"char *f=%c%s%c;",
"#include
"char*x[]={",
"},z=0;main(){int n;",
"printf(*x,34,f,34);puts(&z);",
"puts(x[1]);puts(x[2]);",
"for(n=0;n<8;n++)printf(f,34,x[n],34),puts(&z);",
"for(n=3;n<8;n++)puts(x[n]);}",
},z=0;main(){int n;
printf(*x,34,f,34);puts(&z);
puts(x[1]);puts(x[2]);
for(n=0;n<8;n++)printf(f,34,x[n],34),puts(&z);
for(n=3;n<8;n++)puts(x[n]);}
33、
char *text [] = {
"char *text [] = {",
"0 };",
"main () {",
" char newline = 012, quote = 042, escape = 0134, *p, **p;",
" printf (\"%s%c\", *text, newline);",
" for (pp = text; *pp; pp++) {",
" printf (\" %c\", quote);",
" for (p = *pp; *p; p++) {",
" if (*p == quote)",
" putchar (escape);",
" putchar (*p);",
" }",
" printf (\"%c,%c\", quote, newline);",
" }",
" for (pp = text + 1; *pp; pp++);",
"}",
0 };
main () {
char newline = 012, quote = 042, escape = 0134, *p, **pp;
printf ("%s%c", *text, newline);
for (pp = text; *pp; pp++) {
printf (" %c", quote);
for (p = *pp; *p; p++) {
if (*p == quote)
putchar (escape);
putchar (*p);
}
printf ("%c,%c", quote, newline);
}
for (pp = text + 1; *pp; pp++)
printf ("%s%c", *pp, newline);
34、
#include
char *a[] = {"\"};\n\n",
"main() {\n",
" int i=0; char *b;\n",
" printf(\"#include
" while(*a[i]) {\n",
" for(b=a[i];*b;b++)\n",
" switch(*b) {\n",
" case '\\n': printf(\"\\\\n\"); break;\n",
" case '\\\\': case '\\\"': putchar('\\\\'); \n",
" default: putchar(*b);\n",
" } \n",
" printf(\"\\\",\\n\\t\\\"\"); \n",
" i++;\n",
" }\n",
" i=0;\n",
" while(*a[i]) {printf(a[i]);i++;}\n",
"}\n",
""};
main() {
int i=0; char *b;
printf("#include
while(*a[i]) {
for(b=a[i];*b;b++)
switch(*b) {
case '\n': printf("\\n"); break;
case '\\': case '\"': putchar('\\');
default: putchar(*b);
}
printf("\",\n\t\"");
i++;
}
i=0;
while(*a[i]) {printf(a[i]);i++;}
}
35、
char s[] = "\";\n\
main ()\n\
{ int i; printf (\"char s[] = \\\"\");\n\
for (i=0; s[i]; i++)\n\
{ switch (s[i]) {\n\
case '\\n': printf (\"\\\\n\\\\\\n\"); break;\n\
case '\\\\': printf (\"\\\\\\\\\"); break;\n\
case '\\\"': printf (\"\\\\\\\"\"); break;\n\
default: printf (\"%c\", s[i]); break;}\n\
}\n\
printf (\"%s\",s); }\n\
";
main ()
{ int i; printf ("char s[] = \"");
for (i=0; s[i]; i++)
{ switch (s[i]) {
case '\n': printf ("\\n\\\n"); break;
case '\\': printf ("\\\\"); break;
case '\"': printf ("\\\""); break;
default: printf ("%c", s[i]); break;}
}
printf ("%s",s); }
36、
#include stdio
main()
{
int i;
char *a[27];
a[0] = "#include stdio";
a[1] = "";
a[2] = "main()";
a[3] = " {";
a[4] = " int i;";
a[5] = " char *a[27];";
a[6] = " for (i = 0; i <= 5; i++) printf (\"\%s\\n\", a[i]);";
a[7] = " for (i = 0; i <= 26; i++) printslash (\" a[\%d] = \\\"\%s\\\";\\
n\", i, a[i]);";
a[8] = " for (i = 6; i <= 26; i++) printf (\"\%s\\n\", a[i]);";
a[9] = " }";
a[10] = "";
a[11] = "printslash (string, a1, a2)";
a[12] = "char *string, *a2;";
a[13] = "int a1;";
a[14] = " {";
a[15] = " char b[100];";
a[16] = " int i;";
a[17] = " int j = 0;";
a[18] = " for (i = 0; i < strlen(a2); i++)";
a[19] = " {";
a[20] = " char ch = a2[i];";
a[21] = " if ((ch == '\\\\') || (ch == '\\\%') || (ch == '\\\"')) b[j++]
= '\\\\';";
a[22] = " b[j++] = ch;";
a[23] = " }";
a[24] = " b[j] = '\\0';";
a[25] = " printf (string, a1, b);"; a[26] = " }";
for (i = 0; i <= 5; i++) printf ("%s\n", a[i]);
for (i = 0; i <= 26; i++) printslash (" a[%d] = \"%s\";\n", i, a[i]);
for (i = 6; i <= 26; i++) printf ("%s\n", a[i]);
}
printslash (string, a1, a2)
char *string, *a2;
int a1;
{
char b[100];
int i;
int j = 0;
for (i = 0; i < strlen(a2); i++)
{
char ch = a2[i];
if ((ch == '\\') || (ch == '\%') || (ch == '\"')) b[j++] = '\\';
b[j++] = ch;
}
b[j] = '\0';
printf (string, a1, b);
}
37、
#include
char* a = ";
void main() {
char* c;
printf(\"#include
putchar(34);
for (c = a; c[0] != 0; c++) {
if (c[0] == 34) { putchar(92); putchar(34); }
else if (c[0] == 92) { putchar(92); putchar(92); }
else putchar(c[0]);
}
putchar(34);
printf(\"%s\", a);}
";
void main() {
char* c;
printf("#include
putchar(34);
for (c = a; c[0] != 0; c++) {
if (c[0] == 34) { putchar(92); putchar(34); }
else if (c[0] == 92) { putchar(92); putchar(92); }
else putchar(c[0]);
}
putchar(34);
printf("%s", a);}
38、
char *s= "char *s= \"%s\";\n\n/* Wilson's straightforward self-reproducing program */\n\nchar *q(char *s) {\n char *r = (char *) malloc (strlen(s)*4 + 1);\n int i, j = 0;\n\n for (i=0; i < strlen(s); i++) {\n switch (s[i]) {\n case '\\\\': r[j++] = '\\\\'; r[j++] = '\\\\'; break;\n case '\\\"': r[j++] = '\\\\'; r[j++] = '\\\"'; break;\n case '\\n': r[j++] = '\\\\'; r[j++] = 'n'; break;\n default: r[j++] = s[i]; break;\n }\n }\n r[j++] = '\\0';\n return r;\n}\n\nmain() {\n printf(s, q(s));\n}\n";
/* Wilson's straightforward self-reproducing program */
char *q(char *s) {
char *r = (char *) malloc (strlen(s)*4 + 1);
int i, j = 0;
for (i=0; i < strlen(s); i++) {
switch (s[i]) {
case '\\': r[j++] = '\\'; r[j++] = '\\'; break;
case '\"': r[j++] = '\\'; r[j++] = '\"'; break;
case '\n': r[j++] = '\\'; r[j++] = 'n'; break;
default: r[j++] = s[i]; break;
}
}
r[j++] = '\0';
return r;
}
main() {
printf(s, q(s));
}
39、
for (n=0, k=stack;k g(char *s1,char *s2){ printf(s1); putchar(34); printf(s1); putchar(34); putchar(44); putchar(34); printf(s2); putchar(34); printf(s2); putchar(10);}main () { g("g(char *s1,char *s2){ printf(s1); putchar(34); printf(s1); putchar(34); putchar(44); putchar(34); printf(s2); putchar(34); printf(s2); putchar(10);}main () { g(",");}");} char a='"';char b='\n';char c='\\'; char *instructions[] = { main() {char *p,a;printf(p="main() {char *p,a;printf(p=%c%s%c,a='",a='"',p, char*a??(??)=??< /**/char q='"',*a="*//**/char q='%c',*a=%c%s%c*/};)b(stup;]d[b=]d-852 /**/char q='"',*a="*//**/char q='%c',*a=%c%s%c*/};)b(stup;]d[b=]d-472[b)--d(elihw;)q,a,q,q,2+a,b(ftnirps;)b(stup{)(niam;731=d tni;]572[b,",b[275];int d=137;main(){puts(b);sprintf(b,a+2,q,q,a,q);while(d--)b[274-d]=b[d];puts(b);}/*c%s%c%=a*,'c%'=q rahc/**//*"=a*,'"'=q rahc/**/ /**/main(){char*a=/*/};)q,q,a,q,q,811+a(ftnirp;'"'=q,/**/"/**/main(){char*a=/*/};)q,q,a,q,q,811+a(ftnirp;'c%'=q,/**/c%s%c%/**/,q='c%';printf(a+118,q,q,a,q,q);}/*/=a*rahc{)(niam/**/main(){char*a=/*/};)q,q,a,q,q,811+a(ftnirp;'%c'=q,/**/%c%s%c/**/,q='%c';printf(a+118,q,q,a,q,q);}/*/=a*rahc{)(niam/**/"/**/,q='"';printf(a+118,q,q,a,q,q);}/*/=a*rahc{)(niam/**/ main(){char*a="main(){char*a=c%s%c%;printf(a+42,34,a,34);};)43,a,43,24+a(ftnirp;%c%s%c=a*rahc{)(niam";printf(a+42,34,a,34);}
main(argc, argv)
char** argv;
{
char * dna =
"/* This program prints its source. */\n\nmain(argc, argv)\n\
char** argv;\n{\n char * dna =\n\nZ;\n\n\n express_stri\
ng(dna);\n exit(0);\n}\n\n\n/* Express the string, substit\
uting a quotation of the string \n * for the character 'Z'.\
Breaks the literal into lines of no\n * more than 60 char\
s.\n */\nexpress_string(str)\n char* str;\n{\n char* ptr \
= str;\n char ch;\n int is_quoted = 0;\n\n while(ch = *p\
tr++)\n {\n\n if(ch == 'Z' && !is_quoted)\n\t{\n\t \
int count = 1;\n\t char* ptr = str;\n\t char ch;\n\t pu\
tchar('\"');\n\t while(ch = *ptr++)\n\t {\n\t swit\
ch(ch)\n\t {\n\t\tcase '\\n': printf(\"\\\\n\"); coun\
t +=2; break;\n\t\tcase '\\t': printf(\"\\\\t\"); count +=\
2; break;\n\t\tcase '\\\\': printf(\"\\\\\\\\\"); count +=2\
; break;\n\t\tcase '\"': printf(\"\\\\\\\"\"); count +=2; \
break;\n\t\tdefault: putchar(ch); count +=1; break;\n\t\
}\n\t if(count >= 59)\n\t\t{ printf(\"\\\\\\n\")\
;\n\t\t count = 0;\n\t\t}\n\t }\n\t putchar('\"');\n\t\
}\n\n else putchar(ch);\n is_quoted = ( ch == '\\\
'');\n }\n}\n";
express_string(dna);
exit(0);
}
/* Express the string, substituting a quotation of the string
* for the character 'Z'. Breaks the literal into lines of no
* more than 60 chars.
*/
express_string(str)
char* str;
{
char* ptr = str;
char ch;
int is_quoted = 0;
while(ch = *ptr++)
{
if(ch == 'Z' && !is_quoted)
{
int count = 1;
char* ptr = str;
char ch;
putchar('"');
while(ch = *ptr++)
{
switch(ch)
{
case '\n': printf("\\n"); count +=2; break;
case '\t': printf("\\t"); count +=2; break;
case '\\': printf("\\\\"); count +=2; break;
case '"': printf("\\\""); count +=2; break;
default: putchar(ch); count +=1; break;
}
if(count >= 59)
{ printf("\\\n");
count = 0;
}
}
putchar('"');
}
else putchar(ch);
is_quoted = ( ch == '\'');
}
}
40、
#include
void main(){
int i=0,j=0;
char str[500]={"#include
\n\
void main(){\n\
int i=0,j=0;\n\
char str[500]={\"y\"};\n\
\n\
while(str[i] != 0){\n\
if(str[i] == 0x79){\n\
i++;\n\
while(str[j] != 0){\n\
if(str[j] == 0x0a){\n\
putchar(0x5c);\n\
putchar(0x6e);\n\
putchar(0x5c);\n\
}\n\
if(str[j] == 0x22){\n\
putchar(0x5c);\n\
}\n\
putchar(str[j++]);\n\
}\n\
}\n\
else putchar(str[i++]);\n\
}\n\
}\n\
"};
while(str[i] != 0){
if(str[i] == 0x79){
i++;
while(str[j] != 0){
if(str[j] == 0x0a){
putchar(0x5c);
putchar(0x6e);
putchar(0x5c);
}
if(str[j] == 0x22){
putchar(0x5c);
}
putchar(str[j++]);
}
}
else putchar(str[i++]);
}
}
41、
#define MAXA 100
#define MAXB 47
#define CHANGE 18
#include
char slosh = '\\';
main()
{
int i,j,k;
char str[MAXB][MAXA];
sprintf(str[0],"/* itself.c");
sprintf(str[1],"");
sprintf(str[2]," A program that prints itself out");
sprintf(str[3]," Don Herbison-Evans 15 June 1995");
sprintf(str[4],"*/");
sprintf(str[5],"");
sprintf(str[6],"#define MAXA 100");
sprintf(str[7],"#define MAXB 47");
sprintf(str[8],"#define CHANGE 18");
sprintf(str[9],"#include
sprintf(str[10],"");
sprintf(str[11],"char slosh = '\\';");
sprintf(str[12],"");
sprintf(str[13],"main()");
sprintf(str[14],"{");
sprintf(str[15]," int i,j,k;");
sprintf(str[16]," char str[MAXB][MAXA];");
sprintf(str[17],"");
sprintf(str[18]," for (j = 0; j < CHANGE; ++j)");
sprintf(str[19]," {");
sprintf(str[20]," pr(str[j],0);");
sprintf(str[21]," printf(\"\\n\");");
sprintf(str[22]," }");
sprintf(str[23]," for (j = 0; j < MAXB; ++j)");
sprintf(str[24]," {");
sprintf(str[25]," printf(\" sprintf(str[%%d],\\\"\",j);");
sprintf(str[26]," pr(str[j],0);");
sprintf(str[27]," printf(\"\\\");\");");
sprintf(str[28]," printf(\"\\n\");");
sprintf(str[29]," }");
sprintf(str[30]," for (j = CHANGE; j < MAXB; ++j)");
sprintf(str[31]," {");
sprintf(str[32]," pr(str[j],1);");
sprintf(str[33]," printf(\"\\n\");");
sprintf(str[34]," }");
sprintf(str[35],"}");
sprintf(str[36],"pr(str,asis)");
sprintf(str[37],"char str[MAXA];");
sprintf(str[38],"int asis;");
sprintf(str[39],"{");
sprintf(str[40]," int j;");
sprintf(str[41]," for (j = 0; (j < MAXA) && (str[j] != '\\0');
++j)");
sprintf(str[42]," if ((asis == 0) && ((str[j] == slosh) ||
(str[j] == '\"')))");
sprintf(str[43]," printf(\"%%c%%c\",slosh,str[j]);");
sprintf(str[44]," else if ((asis == 0) && (str[j] == '%%'))
printf(\"%%%%%%%%\");");
sprintf(str[45]," else printf(\"%%c\",str[j]);");
sprintf(str[46],"}");
for (j = 0; j < CHANGE; ++j)
{
pr(str[j],0);
printf("\n");
}
for (j = 0; j < MAXB; ++j)
{
printf(" sprintf(str[%d],\"",j);
pr(str[j],0);
printf("\");");
printf("\n");
}
for (j = CHANGE; j < MAXB; ++j)
{
pr(str[j],1);
printf("\n");
}
}
pr(str,asis)
char str[MAXA];
int asis;
{
int j;
for (j = 0; (j < MAXA) && (str[j] != '\0'); ++j)
if ((asis == 0) && ((str[j] == slosh) || (str[j] == '"')))
printf("%c%c",slosh,str[j]);
else if ((asis == 0) && (str[j] == '%')) printf("%%%%");
else printf("%c",str[j]);
}
42、
#include "stdio.h"
char *stack[2000], buf[2000], chrtab[128][2], *defns[128];
char dna[ ]="stdio.h_X#include X\"__\n\
char 4_Cstack_Sbuf_Bchrtab[4]_Hdefns[4]_V5[4]_]5, 4_,4;_;*4_*2000_K128_L\n\
_/SK]*BK],LH2]LV*,,C;__5==4_%5=4_=dna_DD ]@\"=C;__54_.copy(4)_K\n\
_/strlen(4)_Astrcpy(54,)_E4++_^5+4_+200_X'4'_'5*^4=_Z5;/4._!for (7;6;5)4_F\n\
_/if (5) 4_G{/4/}/_}return(4);/_R(char`*)malloc(4)_M\\\\_$`\"'_Y\n\
_/5 || 4_| c*t^*c^*=Yc*%$'c*%|t$'ZG\\n.'c*%ttt\\n.\\.\"EA+=G;!}F_W\n\
_/cK*Cc*Ct*q*,CqtXcA+M==!tYZ!W!tYZ.t0Z!qR!}!__(4)_~\n\
_/construct(4)_Iarg_J4**_$int 4_Nswitch(5)4}_Odefault: 4_P5-4_-p1-~*_Q\n\
_/break_Ucase 5: 4;/U_:5<4_<5>4_>5 && 4_&4*8'<4*3'>&_?else 4_XqB=Jp=!_W\n\
_/Wtc*V=t*t^t?kpt*-3'+=~J
_/n0=kS=,kp
_/nH5]4=_Ostrncpy(654,,)_Eputs(4)_P923+_T4t.*T%_T\n\
_/xt=D=t*t^ Tqtx-1+M=qxtx-E!qx-t+~*0=! ^TqIPG!t*VqI=X!xt1+=!;}G}F_Q\n\
_/main()/t*x*,q*,CnN!n0=nL
char *copy(c)
char *c;
{
char *t, *q;
q=t=(char*)malloc(200+strlen(c));
*t++='"';
for ( ;*c;*t++=*c++){
if ('"'==*c || '\\'==*c) *t++='\\';
if ('\n'==*c) t=t+strlen(strcpy(t, "\\n\\")); }
*t++='"';
*t++=0;
return(q);
}
char *construct(c)
char *c;
{
char **arg, **p, **k, *t, *q;
int n;
for (p=stack;*c;c++){
switch(*c){
case '`': *p++=chrtab[* ++c];
break;
case '"': *(p-1)=copy(*(p-1));
break;
case '@': *p++=dna;
break;
default: if (*c<'8' && *c>'3') {
*p++=chrtab[*c];
break;
}
q=buf;
arg=p;
for (t=defns[*c];*t;t++){
if (*t<'8' && *t>'3') {
if ((k=p-*t+'3')
}
else *q++=*t;
}
*q=0;
p=arg;
strcpy(*p++=(char*)malloc(strlen(buf)+1), buf); }
}
for (n=0, k=stack;k
}
main()
{
char *t, *x, *q;
int n;
for (n=0;n<128;n++){
chrtab[n][0]=n;
chrtab[n][1]=0;
defns[n]=chrtab[n];
}
for (x=t=dna;*t;t++){
if (* t==92+3) {
q=(char*)malloc(t-x+1);
strncpy(q, x, t-x);
*(q-x+t)=0;
if (* ++t==92+3) puts(construct(q));
else defns[*t]=construct(q);
x=t+1;
}
}
}
43、
#include
main(){char*c="\\\"#include
44、
45、
#define D(x) char*t=#x;x
D(int main(int c,char**v){printf("#define D(x) char*t=#x;x\nD(%s)\n",t);})
46、
main(){char*s="main(){char*s=%c%s%c;%cprintf(%c%s%c,34,s,34,10,34,s,34,10);}%c";
printf("main(){char*s=%c%s%c;%cprintf(%c%s%c,34,s,34,10,34,s,34,10);}%c",34,s,34,10,34,s,34,10);}
47、
char*f="main(){putchar('c');putchar('h');putchar('a');putchar('r');putchar('*');putchar('f');putchar('=');putchar(34);printf(f);putchar(34);putchar(';');putchar(10);printf(f);putchar(10);}";
main(){putchar('c');putchar('h');putchar('a');putchar('r');putchar('*');putchar('f');putchar('=');putchar(34);printf(f);putchar(34);putchar(';');putchar(10);printf(f);putchar(10);}
48、
char*f="char*f=;main(){f[7]=0;printf(f);putchar(34);f[7]=';';printf(f);putchar(34);f[8]=0;printf(&f[7]);f[8]='m';putchar(10);printf(&f[8]);putchar(10);}";
main(){f[7]=0;printf(f);putchar(34);f[7]=';';printf(f);putchar(34);f[8]=0;printf(&f[7]);f[8]='m';putchar(10);printf(&f[8]);putchar(10);}
49、
char*f="char a='%c';char b='%cn';char c='%c%c';%cchar*f=%c%s%c;%cmain(){printf(f,a,c,c,c,b,a,f,a,b,b);}%c";
main(){printf(f,a,c,c,c,b,a,f,a,b,b);}
50、
char*lines[]={
"char*lines[]={",
"%c%s%c%c%c",
"0};",
"main(){",
"int idx;",
"puts(lines[0]);",
"for(idx=0;lines[idx]!=0;idx++){",
"printf(lines[1],34,lines[idx],34,',',10);",
"}",
"puts(lines[2]);",
"for(idx=3;lines[idx]!=0;idx++){",
"puts(lines[idx]);",
"}",
"}",
0};
main(){
int idx;
puts(lines[0]);
for(idx=0;lines[idx]!=0;idx++){
printf(lines[1],34,lines[idx],34,',',10);
}
puts(lines[2]);
for(idx=3;lines[idx]!=0;idx++){
puts(lines[idx]);
}
}
51、
void a(char*b,int d,int e,int f){char*c=b;for(;*c;c++){if(!d&*c==68)putchar(
92),putchar('\n');if(!d&*c==92)putchar(92);if(*c==d)a(b,0,0,0);else putchar(
*c==e?34:*c==f?'\n':*c);}}main(){char p[]=/*
andelion '94 */
"void a(char*b,int d,int e,int f){char*c=b;for(;*c;c++){if(!d&*c==68)putchar(\
D92),putchar('\\n');if(!d&*c==92)putchar(92);if(*c==d)a(b,0,0,0);else putchar(\
D*c==e?34:*c==f?'\\n':*c);}}main(){char p[]=/* \
Dandelion '94 */\
DCAC;a(p,65,67,68);}";a(p,65,67,68);}
52、
"#include
"void copier( s)",
"\tchar *s[];",
"{",
"\tchar **p, *q;",
"\tfputs( \"char *instructions[] = {\\n\", stdout);",
"\tfor( p = s; *p; p++)",
"\t{",
"\t\tfputs( \"\\t\\\"\", stdout);",
"\t\tfor( q = *p; *q; q++)",
"\t\t{",
"\t\t\tswitch(*q)",
"\t\t\t{",
"\t\t\tcase '\\t':",
"\t\t\t\tfputs( \"\\\\t\", stdout);",
"\t\t\t\tbreak;",
"\t\t\tcase '\\\\':",
"\t\t\t\tfputs( \"\\\\\\\\\", stdout);",
"\t\t\t\tbreak;",
"\t\t\tcase '\"':",
"\t\t\t\tfputs( \"\\\\\\\"\", stdout);",
"\t\t\t\tbreak;",
"\t\t\tcase '\\n':",
"\t\t\t\tfputs( \"\\\\n\", stdout);",
"\t\t\t\tbreak;",
"\t\t\tdefault:",
"\t\t\t\tfputc( *q, stdout);",
"\t\t\t\tbreak;",
"\t\t\t}",
"\t\t}",
"\t\tfputs( \"\\\",\\n\", stdout);",
"\t}",
"\tfputs( \"\\t0\\n};\\n\", stdout);",
"}",
"void interp( s)",
"\tchar *s[];",
"{",
"\tchar **p = s;",
"\tfor( p = s; *p; p++)",
"\t{",
"\t\tfputs( *p, stdout);",
"\t\tfputc( '\\n', stdout);",
"\t}",
"}",
"int main( ac, av)",
"\tint ac;",
"\tchar **av;",
"{",
"\tcopier( instructions);",
"\tinterp( instructions);",
"}",
0
};
#include
void copier( s)
char *s[];
{
char **p, *q;
fputs( "char *instructions[] = {\n", stdout);
for( p = s; *p; p++)
{
fputs( "\t\"", stdout);
for( q = *p; *q; q++)
{
switch(*q)
{
case '\t':
fputs( "\\t", stdout);
break;
case '\\':
fputs( "\\\\", stdout);
break;
case '"':
fputs( "\\\"", stdout);
break;
case '\n':
fputs( "\\n", stdout);
break;
default:
fputc( *q, stdout);
break;
}
}
fputs( "\",\n", stdout);
}
fputs( "\t0\n};\n", stdout);
}
void interp( s)
char *s[];
{
char **p = s;
for( p = s; *p; p++)
{
fputs( *p, stdout);
fputc( '\n', stdout);
}
}
int main( ac, av)
int ac;
char **av;
{
copier( instructions);
interp( instructions);
}
53、
a);printf(p="%c',p,%ca);printf(p=%c%s%c%c,a,10,a,p,a,10,a,%c%s%c,a,10);}%c"
,a,10,a,p,a,10,a," *** Email: xxxxxxx@xxx.xx *** IRC: Zuikkis *** ",a,10);}
54、
"??=include",
"??=include",
"??=define o stdout",
"??=define b break;case",
"??=define s(p)fputs(p,o);",
"??=define c(p)fputc(p,o);",
"void t(p,f)char*p;????/")b'??(':s(??/"???/??/?(??/")b'??)'",
":s(??/"???/??/?)??/")b'??/??/??/??/':f&&s(??/"???/??/?/??/")",
"s(??/"???/??/?/??/")b'??/??/n':if(f)s(??/"???/??/?/n??/")",
"else case'??/"':if(f)s(??/"???/??/?/??/??/??/"??/")",
"else default:c(*p)??>??>??>main()??;??/",0);for(p=a",
";*p;p++)t(*p,0);exit(!ferror(o)&&",
"!fclose(o)?EXIT_SUCCESS",
":EXIT_FAILURE);",
"/*NOTREACHED*/",
"??>",
0??>;
??=include
??=include
??=define o stdout
??=define b break;case
??=define s(p)fputs(p,o);
??=define c(p)fputc(p,o);
void t(p,f)char*p;??':s("???/?>")b'??(':s("???/?(")b'??)'
:s("???/?)")b'??/??/':f&&s("???/?/")
s("???/?/")b'??/n':if(f)s("???/?/n")
else case'"':if(f)s("???/?/??/"")
else default:c(*p)??>??>??>main()??;",0);for(p=a
;*p;p++)t(*p,0);exit(!ferror(o)&&
!fclose(o)?EXIT_SUCCESS
:EXIT_FAILURE);
/*NOTREACHED*/
??>
55、
[b)--d(elihw;)q,a,q,q,2+a,b(ftnirps{)(niam;031=d tni;]952[b,",b[259];
int d=130;main(){sprintf(b,a+2,q,q,a,q);while(d--)b[258-d]=b[d];puts(
b);}/*c%s%c%=a*,'c%'=q rahc/**//*"=a*,'"'=q rahc/**/
56、
57、
/**/char
q='"',*a="*//**/char
q='%c',*a=%c%s%c*/};)]d-062[b=]d[b(rahctup)--d(elihw;)q,a,q,q,2+a,b(ftnirps{)(ni
am;162=d tni;]162[b,",b[261];int d=261;main(){sprintf(b,a+2,q,q,a,q);while(d--)p
utchar(b[d]=b[260-d]);}/*c%s%c%=a*,'c%'=q
rahc/**//*"=a*,'"'=q
rahc/**/
58、
59、
main(){char*a="main(){char*a=c%s%c%,q='c%';printf(a+49,q,q,a,q);};)q,a,q,q,94+a(ftnirp;'%c'=q,%c%s%c=a*rahc{)(niam",q='"';printf(a+49,q,q,a,q);}
60、