sábado, 13 de mayo de 2017

EJERCICIO DE ENCRIPTACIÓN

Buenas tardes.

Hace poco en una entrevista de trabajo me pidieron encontrar lo siguiente:


1
2
3
4
5
6
7
def encrypt(text):
total_sum = 0
total_cnt = 0
for c in text:
                total_cnt += 1
                total_sum += ord(c)**total_cnt
return total_cnt, total_sum


El código encripta una palabra, el objetivo es descifrar que palabra se ingresó con una salida dada.

Explicación del código:
Si se codifica la palabra "HOLA", La codificación de esta palabra viene dada por: ord(H)+ord(O)^2+ord(L)^3+ord(A)^4.
La función ord() devuelve el valor ASCII de un caracter.
ord(H)= 72
ord(O)^2=(79)^2 =6241
ord(L)^3=(76)^3=438976
ord(A)^4= (65)^4=17850625
HOLA=18295914

>>encrypt('HOLA')

(4,18295914)

¿Cuándo la función devuelve (4, 37348960), cual ha sido el valor del parámetro “text” ? (es mayúscula).

 Se realiza el siguiente Script.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
def decrypt(total_cnt, total_sum):
    a=0
    b=0
    c=0
    d=0

    A=a
    B=b**2
    C=c**3
    D=d**4

    for d in range(78,91):
        A=a
        B=b**2
        C=c**3
        D=d**4


        if A+B+C+D ==total_sum:
            print chr(a), chr(b), chr(c), chr(d)

        for c in range(69,91):
            A=a
            B=b**2
            C=c**3
            D=d**4

            if A+B+C+D ==total_sum:
                print chr(a), chr(b), chr(c), chr(d)

            for b in range(73,91):
                A=a
                B=b**2
                C=c**3
                D=d**4
                    
                if A+B+C+D ==total_sum:
                    print chr(a), chr(b), chr(c), chr(d)


                for a in range(50,91):
                    A=a
                    B=b**2
                    C=c**3
                    D=d**4
                    
                    if A+B+C+D ==total_sum:
                        print chr(a), chr(b), chr(c), chr(d)
                    
                    print A+B+C+D, A,B,C,D,a,b,c,d

y como resultado,  la palabra ingresada fue: B I E N






No hay comentarios.:

Publicar un comentario