UTNianos

Versión completa: Desafíos de programación
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2 3 4 5 6

Off-topic:
no leatex... es como cuando te preguntan los budistas que ruido hace un arbol que se cae cuando no hay nadie que lo escuche! son preguntas sin respuesta! =P
LeaTex escribió:sin usar archivos? quién te planteó este problema? algún profe de paradigmas?
digo, porque si no tenés archivos, dónde está el código fuente? aunque si trabajás con objetos vivos no tenés archivos fuentes, entonces ahí sería posible hacerlo "sin archivos", pero imposible imprimir el código fuente porque estaríamos hablando de métodos, clases, etc.

por cierto, cuando decís "su propio código", te referís al código fuente, no?

en fin, al margen del lenguaje utilizado, hacés que el programa encuentre su archivo fuente, lo lea y lo imprima como si fuera cualquier otro archivo. pero para eso, ya te digo, tenés que tener un archivo fuente.

no se me ocurre otra cosa. tal vez con un poco más de datos se me ocurre algo más.


el programa tendria que ser un descompilador

osea que trasforme el binario al lenguaje asi se trasforma el mismo =P
Sin manejo de archivos me refiero a ....sin manejo de archivos....archivos tenes que tener, sino el codigo esta en el eter :O

la onda es no usar ni lectura de archivos, ni nada que maneje archivos :P
¿No te quedaría una recursividad infinita?

Porque mostras algo que incluye la linea donde lo mostras, que a su vez incluye la linea donde lo mostras, etc, etc...
Seria un programa que pueda leer su propio código cuando se ejecuta. En un lenguaje interpretado lo veo posible (en Python por ejemplo) porque tenes el código fuente a mano, y capas manipulando el interprete y la memoria podes sacar algo. Habría que ver bien como trabaja el interprete y meter mano por ahi.

En un programa compilado ya lo veo difícil porque el fuente no lo tenes más y vas a necesitar un buen descompilador (no conozco ninguno 100% operacional todavía) para aproximarte al código fuente, lo que seria un quilombo porque necesitarías al mismo descompilador metido en el programa.
uhm...
pienso que puedo buscar el codigo en binario en la memoria, y presentarlo en hexa en la pantalla, quizas se referia a eso, no debe ser muy dificil, haces un un print del code segment y listo( no me preguntes en la practica como se haria esto porque no tengo ni idea...)
no creo que un programa compilado pueda presentar su propio codigo fuente a partir del archivo objeto, o de lo que este en memoria, a lo sumo se podria usar un decompilador como dijeron, pero como un proceso aparte del pgm en si...
jarry escribió:uhm...
pienso que puedo buscar el codigo en binario en la memoria, y presentarlo en hexa en la pantalla, quizas se referia a eso, no debe ser muy dificil, haces un un print del code segment y listo( no me preguntes en la practica como se haria esto porque no tengo ni idea...)
no creo que un programa compilado pueda presentar su propio codigo fuente a partir del archivo objeto, o de lo que este en memoria, a lo sumo se podria usar un decompilador como dijeron, pero como un proceso aparte del pgm en si...

No habría problemas de seguridad en un SO tradicional intentando leer del code segment? O sólo trae problemas si se quiere escribir en ese área? (digo, no es "ilegal" que un dato de una instrucción esté referenciado a algo que esté fuera del data segment?)
donde esta de luca cuando se la necesita? =P
no se, creo que dependede cada SO, habria que ver, si no me equivoco los ataques por desbordamiento de buffer se basaban en algo parecido.
igual creo que pocos SO controlan tan estrictamente los segmentos...
Algun desafio de programacion copado dando vueltas?
Estaba copado este thread
lo del propio programa que imprima su codigo se refiere a esto creo


#include <stdio.h>

int
main (void)
{
char *s1="#include <stdio.h>%c%cint%cmain (void)%c{%c";
char *s2=" char *s%c=%c%s%c;%c char *s%c=%c%s%c;%c";
char *s3=" char n='%cn', q='%c', b='%c%c';%c";
char *sp=" printf(";
char *s4="%ss1,n,n,n,n,n);%c";
char *s5="%ss2,'1',q,s1,q,n,'2',q,s2,q,n);%ss2,'3',q,s3,q,n,'p',q,sp,q,n);%c";
char *s6="%ss2,'4',q,s4,q,n,'5',q,s5,q,n);%ss2,'6',q,s6,q,n,'7',q,s7,q,n);%c";
char *s7="%ss2,'8',q,s8,q,n,'9',q,s9,q,n);%ss2,'0',q,s0,q,n,'x',q,sx,q,n);%c";
char *s8="%ss3,b,q,b,b,n);%ss4,sp,n);%ss5,sp,sp,n);%c";
char *s9="%ss6,sp,sp,n);%ss7,sp,sp,n);%ss8,sp,sp,sp,n);%c";
char *s0="%ss9,sp,sp,sp,n);%ss0,sp,sp,n,n,n);%c return 0;%c}%c";
char *sx="--- This is an intron. ---";
char n='\n', q='"', b='\\';
printf(s1,n,n,n,n,n);
printf(s2,'1',q,s1,q,n,'2',q,s2,q,n); printf(s2,'3',q,s3,q,n,'p',q,sp,q,n);
printf(s2,'4',q,s4,q,n,'5',q,s5,q,n); printf(s2,'6',q,s6,q,n,'7',q,s7,q,n);
printf(s2,'8',q,s8,q,n,'9',q,s9,q,n); printf(s2,'0',q,s0,q,n,'x',q,sx,q,n);
printf(s3,b,q,b,b,n); printf(s4,sp,n); printf(s5,sp,sp,n);
printf(s6,sp,sp,n); printf(s7,sp,sp,n); printf(s8,sp,sp,sp,n);
printf(s9,sp,sp,sp,n); printf(s0,sp,sp,n,n,n);
return 0;
}


obvio que no se me ocurrio, es un concepto de programacion

http://en.wikipedia.org/wiki/Quine_(computing)

http://www.madore.org/~david/computers/quine.html

hay en varios lados, hay desafios tmb dando vueltas para hacer en cada lenguaje el mas corto posible y cosas asi. Solo para fanaticos (?)
lo habia leido hace un tiempo lo de quine blush

como a nadie se le ocurrio escribir el codigo harcodeado ?? =P
http://programmingpraxis.com

Está copada la página. Yo estoy suscripto al feed y cada tanto me mando a hacer algún ejercicio. Está bueno porque además la gente se copa y ponen sus soluciones en distintos lenguajes, y además el flaco pone seguido ejercicios que se toman en entrevistas laborales. Tiene ejercicios muy relacionados con la matemática (onda project euler) pero tiene muchos más orientados a todos los aspectos de la programación.

podríamos sacar alguno de ahí
Determine si DIos existe usando un algoritmo.
No hay restricciones respecto a la complejidad, en tanto usted pueda garantizar que el mismo termina en tiempo finito.
Buena suerte!
Páginas: 1 2 3 4 5 6
URLs de referencia