lunes, 31 de agosto de 2009

sábado, 22 de agosto de 2009

Problemas Abiertos de la Informática

Pensando en los famosos "problemas abiertos de las matemáticas", me puse a buscar un paralelo informático y, aquí está:

Problemas Abiertos

martes, 18 de agosto de 2009

lunes, 10 de agosto de 2009

Porqué Python?




Python es un lenguaje sencillo y versátil que todo el mundo (inclusive quienes no trabajen directamente en programación) debería conocer.
Posee:

- Sintaxis limpia y sencilla. Esto hace que sea rápido desarrollar reduciendo los tiempos y la cantidad necesaria de programadores. Es ideal para escritura de scripts rápidos.

- Baterías incluidas: Tiene una enorme biblioteca estándar lo que hace que el trabajo sea más veloz y sencillo.

- Multiparadigma.

- Poderoso y robusto.

- Su identación obligatoria hace que la claridad de los programas resalte.

- Usado en conjunto con bibliotecas gráficas (como GTK+ o Qt) es posible armar proyectos grandes que incluyan GUIs.

- Portable. Es posible ejecutarlo en, por ejemplo, Linux, windows y Mac, Windows Mobile, y Google Android (gracias Fisa)

- Documentación altamente disponible: 1) En internet (muchas páginas y wikis incluyendo oficiales y no oficiales) 2) Listas de correo (como pyar) donde hay un feedback constante. 3) En el mismo modo interactivo.

- Una comunidad excelente en Argentina (gracias Facundo) http://www.python.org.ar

Creo que esas son las principales.
La pregunta es, todavía no probaste python?

miércoles, 29 de julio de 2009

Conjetura de Collatz:: 3n+1

Explicación

Por si no les dió ganas de leer, basicamente lo que expone es que dado un numero entero positivo cualquiera (n), si se le realizan una serie operaciones sucesivas (si el nro es par, se lo divide por 2, caso contrario, se lo multiplica por 3 y se le suma 1) el resultado siempre es 1.
Ejemplo:

{7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1}

Una vez alcanzado el 1, no se continúa ya que quedaríamos en un loop ya que 1 es impar y:

1 * 3 + 1 = 4
4 / 2 = 2
2 / 2 = 1
1 * 3 + 1 = 4
etc
etc

Hasta la fecha no se ha demostrado.

Dejo un script en python que (si bien no lo demuestra) sirve para jugar un rato probando con distintos números.


def syracusse(init):
print "<--START (" + str(init) + ")"
syr = init
while syr != 1:
if syr % 2 == 0:
syr = syr / 2
else:
syr = (syr * 3) + 1
print syr
print "<--END"

lunes, 27 de julio de 2009

Autodocumentación



Algo muy bueno y que realmente puede ser muy útil en python es la autodocumentación.

Realmente no requiere demasiada explicación, solamente es necesario ingresar un comentario del tipo (""") al comienzo de nuestra function (debe estar identada) y luego, invocando el comando help() pasandole el nombre la función veremos ese texto. Ejemplo:

def autodoc(msj):
"""Ejemplo de autodocumentacion
parametros: msj = Mensaje a mostrar"
""
print msj
help(autodoc)

Vamos a ver algo asi:

Help on function autodoc in module __main__:

autodoc(msj)
····Ejemplo de autodocumentacion
····parametros: msj = Mensaje a mostrar
(END)

sábado, 25 de julio de 2009

Crawling





Quería compartir una function de mi autoría escrita en php. Lo que hace es recorrer directorios recursivamente a partir de un path inicial.
Se llama crawleo por una particular obsesión con la palabra "jaleo". Jaleo, Crawleo... etc.

Yo uso llamo a una function (mia también) que se llama indexme. Lo que hace es indexar el contenido de los archivos en MySQL. No es relevante para el ejemplo asi que no la inclui.
Donde dice indexme pueden poner otra cosa :P
function crawleo($spath){
if(file_exists($spath)){
$ptr = opendir($spath);
while(($buf = readdir($ptr))!=null){
if(trim($buf)!="." && trim($buf)!=".."){
if(is_file($spath."\\".$buf)){
$currf = $spath."\\".$buf;
indexme($currf);
}elseif(is_dir($spath."\\".$buf)){
$currf = $spath."\\".$buf;
crawleo($currf);
}
}
}
closedir($ptr);
}else{
echo "Search Path: $spath not found";
}
}