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";
}
}

Octopus Project

Esta entrada es sólo para decir que mi proyecto Octopus project se está pasando a linux de la mano de python.

Code name Octopys??? Pyctopus?? En fin...

Regular Expressions



Fuente: http://xkcd.com/

miércoles, 22 de julio de 2009

viernes, 17 de julio de 2009

Teorema que demuestra que está todo inventado


Cuando pensé en publicar esto no supe si ponerle como título "La máquina cuantica" o "Teorema que demuestra que está todo inventado" Me decidí por el segundo porque me pareció mas gracioso.

Estaba pensando (cosa rara) acerca de las combinaciones posibles y se me vino a la mente cierto experimento mental:

Supongamos que tengo un programa que genera todas las combinaciones posibles (de todos los valores ASCII posibles) y de todos los tamaños posibles, es decir, 0 hasta X.

Antes de seguir, propongo que lean esto:
Infinitos Monos con Maquinas de Escribir

Bien, entonces, pensemos de nuevo en lo que escribí más arriba.
Tenemos un programa corriendo que genera un archivo con todas las combinaciones posibles de caracteres ASCII iniciando en un tamaño de archivo y progresando el tamaño de 1 en 1 hasta agotar las combinaciones.

Sería logico pensar que, en algún momento, algunas de las combinaciones resultantes van a resultar en un archivo de texto legible o en imagenes o en videos o en programas ejecutables, etc.

La cantidad de combinaciones es monstruosa y que seria casi imposible separar que archivo es "algo" y que es "basura". Ademas, la velocidad de procesamiento hace que sea casi interminable, faltarían vidas enteras para analizar toda la data generada y, la mayoría será "basura"

Pero, olvidemos por un momento estos pormenores, suponiendo que logré todas las combinaciones posibles desde 0 a 1GB. Y supongamos que, con algun metodo, separé lo que es basura de lo que es "algo" y lo clasifiqué en:

- Imagenes (jpg, bmp, gif, etc)
- Peliculas (avi, mov, mpeg, etc)
- Musica (mp3, wav, etc)
- Texto

Esto quiere decir que, si tengo todas las combinaciones posibles tendré, todo lo que esté en el rango de 0 a 1GB. O sea, si el tema "Welcome to the Jungle" en formato mp3 pesara 5MB, estaría allí! Lo mismo, si la película "Sin City" en formato avi pesara 780MB, también estaría allí! Loco?

Más loco: también estarían las fotos (si están en el rango de 0 a 1GB) de mis vacaciones y de las tuyas (lector)

Más escalofriante: también encontraríamos música que nunca fue escrita, peliculas que nunca fueron filmadas, textos y programas jamás escritos! De hecho, habría fotos de nosotros en situaciones que jamás pasaron con gente que ni conocemos!! De hecho, si estuviera en el rango 0 a 1GB, el código fuente del windows vista también estaría allí...

De hecho, este artículo también estaría allí.

Entonces, será que todo en realidad ya existe? O sea, ya existe en cuanto al abanico de lo potencial. No será que cuando sacamos una foto, escribimos algo, filmamos un video, etc, no estamos "creando" sino que estamos "descubriendo", "eligiendo" de una lista casi infinita de posibilidades?

Que pasaría si se pudiera llevar a cabo algo así? Supongamos que tuvieramos computadoras muchisimo mas potentes, capaces de analizar y manejar esa tremenda cantidad de datos. Que pasaría? Estaría, realmente, todo "inventado"?


martes, 7 de julio de 2009

Kit Anti Zombies

KIT ANTI-ZOMBIE 2000





















Nadie es ajeno a los tiempos que corren: pandemias, virus, etc. Nunca se sabe cuando todo puede degenerar en zombies atacandonos y deseando nuestros cerebros. Es por eso que desarrollé el kit anti zombie para estar preparados.
El mismo incluye:

- Máscara de gas. Especial para mantenerse a salvo del contagio
- Escopeta recortada. Ideal para volar cabezas zombies, muy portable y comoda. (municiones no incluidas)
- 150 latas de conserva con alimentos varios. Necesario si se tiene que estar días sin salir a la calle.
- 2 walkie-talkies para comunicarte con tu compañero/a sobreviviente.
- 500 historietas de Mafalda. Es necesario un poco de humor para pasar el rato. Ademas, reir, levanta la moral.
- 1 botella de Vodka. Por su composicion quimica es ideal para fabricar cocteles Molotov y arrojarselo a los reanimados. O en su defecto, empedarse para olvidar. Tambien es util para cauterizar heridas (pero es mejor empedarse).
- Peine o peineta. Porque, vamos, habrá zombies, será el apocalipsis pero no hay razón por la cuál no verse bien.
- Soga. Los usos posibles son miles. Muy útil para colgarse en caso de desesperación.
- Cuchillo de combate (onda rambo). Idem anterior. Además es vital para traicionar a tu compañero/a sobreviviente en caso de escasez de alimentos.
- Cd y reproductor de Cds con el tema thriller de MJ (r.i.p.). Sirve para generar ambiente, además, a los zombies parece gustarles y quizá sea un buen medio de distracción.
- 2 granadas de manos. La utilidad es obvia. También es útil para suicidios masivos.

El kit es personalizable a gusto del cliente. Los precios varían según el combo elegido y se puede encagar por teléfono al 444-5584

EDITADO: Vodka agregado a pedido de Gustavox.