Traduje este cifrado que hizo Metal:
def progresivo(s, n, o):
encoded = [ord(s[0]) + n,]
decoded = [ord(s[0]) - n,]
if o == 1:
for i in s[1::]:
encoded.append(ord(i) + encoded[-1])
print "".join([unichr(x) for x in encoded])
elif o == 0:
for i in s[1::]:
decoded.append(ord(i) - decoded[-1])
print "".join([unichr(x) for x in decoded])
#Params: s = Texto a cifrar o descifrar | n = key | o = 1 -> cifrar, o = 0 -> descifrar
#progresivo('sanko', 2, 1) -> output example uÖńƯȞ
Nosé si la sintaxis esta bien pero así se resume a la mitad:
def progresivo(s, n, o):
encoded = [ord(s[0]) + n,]
decoded = [ord(s[0]) - n,]
for i in s[1::]:
if o == 1:
encoded.append(ord(i) + encoded[-1])
elif o == 0:
decoded.append(ord(i) - decoded[-1])
print "".join([unichr(x) for x in encoded]) if (o ==1)
print "".join([unichr(x) for x in decoded]) if (o ==0)
Excelente trabajo por parte de los dos! se ven excelente los codes!
Felicitaciones!
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Nosé si la sintaxis esta bien pero así se resume a la mitad:
def progresivo(s, n, o):
encoded = [ord(s[0]) + n,]
decoded = [ord(s[0]) - n,]
for i in s[1::]:
if o == 1:
encoded.append(ord(i) + encoded[-1])
elif o == 0:
decoded.append(ord(i) - decoded[-1])
print "".join([unichr(x) for x in encoded])
No bro, tu code esta erroneo, de esta manera solo podrias cifrar.
PD: Hablamos de E/S
Saludos
Haber si funciona con lo que he editado, esque es una tontería hacer dos for para un proceso y su inversa ademas salen mas lineas...
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Haber si funciona con lo que he editado, esque es una tontería hacer dos for para un proceso y su inversa ademas salen mas lineas...
Tu código era correcto, lo único que no imprimías el resultado en caso de descifrado, pero idéntico a nivel semántico.
El otro código no hace 2 for para un proceso y su inversa, simplemente multiplexa con un condicional la función a realizar y solo se ejecuta uno de los bucles. Muchas veces, una linea o 2 más no importa, incluso puede ayudar a mejorar la eficiencia, aunque no es mucho mira:
Juan: 0.000392249999046s
Sanko: 0.000362740001678s
Además por mi parte veo más lógico saber si primero se va a cifrar o descifrar y luego aplicar la función y no en el mismo bucle de la función realizar n comparaciones siendo n la longitud de la cadena a cifrar (tú estás comprobando por cada caracter si va a ser cifrado o descifrado cada vez que se itera sobre él, esto no es necesario y sobrarían n-1 condicionales ya que el primer resultado es idéntico a los obtenidos después)
En resumidas cuentas, el código de sanko hace 1 condicional y 1 bucle, mientras que el tuyo hace 1 bucle con n condicionales.
Un saludo manes :)