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!
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
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...
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
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 :)