Código Gray (en Python)

Ojo: No leer si no sabes que es un bit!

"En mis tiempos, yo no tenia ordenador,
asi que programaba en papel"
El que programaba en papel

Esta es la implementacion del codigo binario reflejado (codigo gray), en el ilustrisimo y facilisimo y potente lenguaje de Python… Les dire que lo increible de esto es que lo concebi en una hoja de papel… y es que es demasiado fácil pensar en Python que en Java… (‘print’ en vez de ’sout’+tab claro en NetBeans6.5)… jeje

 def prefix (l):
    r=[]
    lim=len(l)/2
    for i in range(len(l)):
        if i<lim:
           r.append(str('0'+l[i]))
        else:
           r.append(str('1'+l[i]))
    return r

def dupli(l):
    r=[]
    ran=range(-len(l),0)
    ran.reverse()
        for i in ran:
            r.insert(0,l[i])
            r.append(l[i])
    return r

def gray (n):
     if n==1:
         return['0','1']
     else:
         return prefix(dupli(gray(n-1)))

# A verdad, Claro esta ya cuando lo pase a compu,
# tuve que hacer ajuste para que funcionara
# El directo de la hoja los daba desordenados...
n=raw_input('Codigo de gray de ? bits\n')
print gray(int(n))
Cuando los pasaba al ordenador,
igual y no funcionaban... pero ¿Y que?
Nunca les dije que funcionará, ¿o sí?

Una respuesta

  1. Yo hice ese mismo código en C++ para alguien mas.

    Interesante…

Escribe un comentario