Uno de los ejercicios propuestos por un profesor de programación, fue el de hacer un programa que imprima su código. (Obviamente sin leer ningún archivo)
Aquí una posible solución, se puede hacer mucho más corto, quitando las tabulaciones y los saltos de línea, pero así queda más visual de corroborar.
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
int i,n;
char palabra[] = "#include <stdio.h>\n#include <string.h>\n\nint main(int argc, char **argv)\n{\n\tint i, n;\n\tchar palabra[] = \tn=strlen (palabra);\n\tpalabra[102]='\\0';\n\tprintf (\"%s \",palabra);\n\tpalabra[102]=' ';\n\tprintf (\"\\\"\");\n\tfor (i=0;i<n;i++)\n\t\tswitch (palabra[i])\n\t\t\t{\n\t\t\t\tcase '\\n':\n\t\t\t\tprintf (\"\\\\n\");\n\t\t\t\tbreak;\n\t\t\t\tcase '\\t':\n\t\t\t\tprintf (\"\\\\t\");\n\t\t\t\tbreak;\n\t\t\t\tcase '\\\\':\n\t\t\t\tprintf (\"\\\\\\\\\");\n\t\t\t\tbreak;\n\t\t\t\tcase '\\\"':\n\t\t\t\tprintf (\"\\\\\\\"\");\n\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\tprintf (\"%c\",palabar[i]);\n\t\t\t}\n\tprintf (\"\\\";\\n\");\n\tprintf (\"%s\", palabra+103);\n\treturn 0\n}";
n=strlen (palabra);
palabra[102]='\0';
printf ("%s ",palabra);
palabra[102]=' ';
printf ("\"");
for (i=0;i<n;i++)
switch (palabra[i])
{
case '\n':
printf ("\\n");
break;
case '\t':
printf ("\\t");
break;
case '\\':
printf ("\\\\");
break;
case '\"':
printf ("\\\"");
break;
default:
printf ("%c",palabra[i]);
}
printf ("\";\n");
printf ("%s", palabra+103);
return 0;
}
Eso se llamaba "quine" o algo así, no?? Es curioso
CitarEso se llamaba "quine" o algo así, no?? Es curioso
Fijándome, así es, gracias por el dato. Acá pongo el link de la wikipedia: http://en.wikipedia.org/wiki/Quine_%28computing%29 (http://en.wikipedia.org/wiki/Quine_%28computing%29)
Los chicos de Visual Basic hicieron un reto que trataba de mostrar el codigo fuente del programa ejecutado:
[Reto] Show My Source Code. (http://foro.elhacker.net/programacion_visual_basic/reto_show_my_source_code-t319941.0.html;msg1582603#msg1582603)