Aquí!
Después de 3 meses vuelve Código para llevar, habrá cambios, para empezar los cambios el sistema de blogging ha pasado de Wordpress a acrylamid, mucho más ligero. La migración no está del todo completa y los comentarios tardarán un rato :P, ahí nos vemos.
domingo, 3 de marzo de 2013
domingo, 2 de diciembre de 2012
Fin del .co.cc
El 12 de noviembre se acabaron los .co.cc, con ello el dominio del blog, tengo backups de todo, pero como voy a andar liado hasta enero no creo que encuentre nada hasta entonces, mientras tanto andaré por HackXCrack y Hackliza!, nos vemos por ahí.
Saludos
Saludos
Etiquetas:
offtopic
viernes, 8 de abril de 2011
Nos mudamos
Después de año y pico con Blogger el blog se muda a un Wordpress, el tema es que da mucho más juego para cacharrear ( los de HelioHost permiten cgi's y en ruby, python, perl y demás golosinas ), ser un poco más libres y de paso queda todo ordenado, falta adaptar algunos posts que dan problemas con la indentación del código y cosas así, pero ya está operativo en:
http://codigoparallevar.co.cc/blog/
(La principal aún está por hacer xD)
Y eso es todo, nos vemos
http://codigoparallevar.co.cc/blog/
(La principal aún está por hacer xD)
Y eso es todo, nos vemos
Etiquetas:
exit
miércoles, 6 de abril de 2011
Un bot eliza para IRC
Bueno, pues me encontré en [ http://www.jezuk.co.uk/cgi-bin/view/software/eliza ] un bot eliza programado en python que puede ser usado directamente o como módulo, así que traducido a español y con la librería de IRC pues ya está listo un bot para hacer la gracia.
Todo junto aquí [ wilson.zip ] (hay que ejecutar a wilson.py)
Todo junto aquí [ wilson.zip ] (hay que ejecutar a wilson.py)
lunes, 4 de abril de 2011
Suma y resta en Tubes [ desvarío ]
Por si alguien se pensaba que el intérprete de Tubes iba en broma (la elección del día quizá no fue la mejor xD), aquí va una pequeña calculadora (suma y resta módulo 4) [ http://pastebin.com/qrU4wWMT ]
Saludos
Saludos
viernes, 1 de abril de 2011
Intérprete de Tubes
Actualizado: el intérprete tenía un bug en una tabla, ya está arreglado [ http://pastebin.com/1zQQD0a4 ]
El otro día, rondando por esolang.org me encontré con un lenguaje de esos que hay que probar, Tubes, donde la lógica del programa se escribe en forma de cañerías, por ejemplo, un bucle que va mostrando 012301230123...
┌┐ ◉◆ ║║ ▶┤│ └┘
Pero había un problema, aún no había una implementación, así que hubo que ponerse manos a la obra, y de paso aprovechar para probar Python 3 que se maneja mejor que la versión 2 con las cadenas Unicode (todos los "dibujos" del código son unicode :P), este es el resultado[ http://pastebin.com/1zQQD0a4 ].
Como parámetro necesita el código a ejecutar, pero luce más si se le pasa la opción -d para que muestre el estado actual, se puede regular el retardo entre operaciones especificandolo después de -d (sinó no muestra el estado no hay retardo) y... eso es todo, chim pum!
Nos vemos
Etiquetas:
esoterico,
interpretes,
python,
python3
Internacionalizando un programa
Hoy veremos como hacer posible que se traduzca un programa a distintas lenguas ( internacionalización ), esto lo haremos con la librería gettext de GNU
Etiquetas:
C,
traduccion
miércoles, 30 de marzo de 2011
Evolvotron, un programa que hay que probar [offtopic]
Me voy a salir un poco de tema para recomendar un programa de "arte generativo", Evolvotron, lo que hace es mostrar al usuario unas imágenes de la que tiene que seleccionar una, así continuamente para encontrar con un algoritmo genético una imágen a gusto del usuario (requiere un poco de paciencia para cojerle el truco), la única parte mala es que según la web parece que no funciona en el SO de Microsoft (aunque es GPL y usa Qt y BOOST, no debería ser difícil portarlo).
Y con un poco de paciencia acabas con un wallpaper o con una galería como esta[ gigrafx - deviantart ]
Enfin, que si andais aburridos ya teneis que hacer :P
Y con un poco de paciencia acabas con un wallpaper o con una galería como esta[ gigrafx - deviantart ]
Enfin, que si andais aburridos ya teneis que hacer :P
Etiquetas:
arte generativo,
offtopic
lunes, 28 de marzo de 2011
Programa para manejar archivos .torrent
La idea era escribir un programa que manejara archivos .torrent ( añadir, modificar y eliminar datos ) y de paso un mini-libreria ( tres archivos ).
Por partes, aquí está el código [ btcat.zip ], se compila con make o compilando directamente btcat.c
Los argumentos son estos:
./btcat -f <file> -l [-b]
./btcat -f <file> -e <element> {-s|-a <type>|-r|-m <value>} -o <output> [-b]
./btcat -n -o <output>
./btcat -h
-h: Shows this help
-l: Lists the *.torrent file content
-s: Shows an element
-r: Deletes an element
-a: Adds an element
-n: Creates a new file
Types:
d: Dictionary
l: List
i: Integer
s: String
Note: Dictionaries and lists ignore the value
-m: Modify an element
-e: File element
-o: Output file
-b: Shows also the binary information
-f: Set's the target file
Por partes, aquí está el código [ btcat.zip ], se compila con make o compilando directamente btcat.c
Los argumentos son estos:
./btcat -f <file> -l [-b]
./btcat -f <file> -e <element> {-s|-a <type>|-r|-m <value>} -o <output> [-b]
./btcat -n -o <output>
./btcat -h
-h: Shows this help
-l: Lists the *.torrent file content
-s: Shows an element
-r: Deletes an element
-a: Adds an element
-n: Creates a new file
Types:
d: Dictionary
l: List
i: Integer
s: String
Note: Dictionaries and lists ignore the value
-m: Modify an element
-e: File element
-o: Output file
-b: Shows also the binary information
-f: Set's the target file
Etiquetas:
bittorrent,
C,
torrent
jueves, 24 de marzo de 2011
Comprobación de números primos con el FIPS186
Que no se diga, aquí está el código del algoritmo y una comprobación para ver el número de falsos positivos y negativos:
Por ejemplo:
Primos: 1225
Falsos negativos: 608
Falsos positivos: 0
ps: se me pasó poner la licencia, como siempre está bajo WTFPL
Saludos
Por ejemplo:
Primos: 1225
Falsos negativos: 608
Falsos positivos: 0
ps: se me pasó poner la licencia, como siempre está bajo WTFPL
Saludos
Etiquetas:
python
Suscribirse a:
Entradas (Atom)
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import random
""" FIPS186
Step 1. Set i = 1 and n > or = to 50.
Step 2. Set w = the integer to be tested, w = 1 + 2 a m, where m is odd and 2 a is m, where m is odd and 2 is the largest power of 2 dividing w - 1
Step 3. Generate a random integer b in the range 1 < b < w
Step 4. Set j = 0 and z = b**m mod w mod w
Step 5. If j = 0 and z = 1, or if z = w - 1, go to step 9
Step 6. If j > 0 and z = 1, go to step 8
Step 7. j = j + 1. If j < a, set z = z 2 mod w and go to step 5 mod w and go to step 5
Step 8. w is not prime. Stop.
Step 9. If i < n, set i = i + 1 and go to step 3. Otherwise, w is probably prime
"""
from math import sqrt
# Comprobación real
def rchk(n):
for i in xrange(2,int(sqrt(n))+1):
if not n % i:
return False
return True
# Especificada en el FIPS186
def chkprime(w, n = 50):
m = w-1
a = 0
while not m & 1:
m >>= 1
a += 1
i = 0
while True:
b = random.randint(2, w-1)
j = 0
while True:
z = (b**m) % w
if ( j == 0 and z == 1) or \
z == w-1:
if (i<n):
i += 1
break
else:
return True
if j > 0 and z == 1:
return False
j += 1
if j < a:
z = ( z * z ) % w
else:
return False
fn = 0
fp = 0
pr = 0
inicio = 10
fin = 10000
import sys
for i in xrange(inicio,fin):
c = chkprime(i)
r = rchk(i)
if not i%100:
sys.stdout.write("\r"+str(i)+" "+str(pr))
sys.stdout.flush()
if c:
pr += 1
if c != r:
if c:
fp += 1
pr -= 1
else:
fn += 1
pr += 1
print ""
print "Primos:", pr
print "Falsos negativos:", fn
print "Falsos positivos:", fp