Advertisement
cinnamonandrew

Crypto

Mar 4th, 2020
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.40 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Wed Mar  4 14:55:11 2020
  4.  
  5. @author: Andrew Candet
  6. """
  7. import numpy as np
  8.  
  9. words = []
  10. letters = []
  11. assigns = []
  12.  
  13. f = open("crypto1.in", "r")
  14.  
  15. inp = f.readline().split()
  16.  
  17. for each in inp:
  18.     words.append(each)
  19.     for e in each:
  20.         if e not in letters:
  21.             letters.append(e)
  22.  
  23. tr = int(input("Trials: "))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
  24.  
  25. def map(word, translate):
  26.     ret = 0
  27.     #print(ret)
  28.     for e in word:
  29.         ret = (ret<<4) + translate[letters.index(e)]
  30.        
  31.         #print(hex(ret), "#", hex(translate[letters.index(e)]))
  32.        
  33.     return ret
  34.  
  35. def check(trans):
  36.     n = len(words)
  37.     s = 0
  38.     #s += list(map(words[:n-1], trans))
  39.     for i in range(n - 1):
  40.         s += map(words[i], trans)
  41.        
  42.     return map(words[n-1], trans) == s
  43.        
  44.  
  45. for t in range(tr):
  46.     while(len(assigns) != len(letters)):
  47.         rn = np.random.randint(0, 16)
  48.         while rn in assigns:
  49.             rn = np.random.randint(0, 16)
  50.         assigns.append(rn)
  51.    
  52.     if check(assigns):
  53.         print(letters)
  54.         print(assigns)
  55.         break
  56.     assigns = []
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement