Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import defaultdict
- import colorama
- colorama.init()
- s = """DBZMGAOIYSOPVFHOWKBWXZPJLVVRFGNBKIXDVUIMOPFQLVVPUDKPRVWOARLW
- DVLMWAWINZDAKBWMMRLWQIICGPAKYUCVZKMZARPSDTRVDZWEYGABYYEYMGYF
- YAFHLCMWLWLCVHLMMGYLDBZIFJNCYLOMIAJJCGMAIBVRLOPVFWOBVLKOPVUJ
- ZDVLQXWDGGIQEYFBTZMZDVRMMANZWAZVKFQGWEALZFKNZZZVCKVDVLQBWFXU
- CIEWWOPRMUJZIYKKWEXAIOIYHZIKYVGMKNWMOIIMKADUQWMWIMILZHLCMTCH
- CMINWSBRHVOPVSODTCMGHMKCEZASYDJKRNWYIKCFOMIPSGAFZKJUVGMGBZJD
- ZWWNZZVLGTZZFZSGXYUTZBJCFPAVNZZAVWSIJVZGPVUVQNKRHFDVXNZZKZJZ
- ZZKYPOIEXXMWDNZZQIMHVKZHYDVKYDGQXYFOOLYKNMJGSYMRMLJBYYFPUSYJ
- JNRFHCISYLN""".replace('\n', "")
- n = len(s)
- occ = defaultdict(list)
- for i in range(n):
- for j in range(i+1, min(n, i+6)):
- l = j-i+1
- z = s[i:j+1]
- occ[z].append((i, j))
- f = [(x, y) for x, y in occ.items() if len(y) > 3 and len(x) > 2]
- print(f)
- for pattern, occs in f:
- for l, r in occs:
- for l2, r2 in occs:
- if l2>l:
- print(l2-l)
- # Seems like the size of the key is 5
- print(colorama.Fore.LIGHTBLACK_EX)
- print(*[s[i:i+5] for i in range(0, n, 5)], sep='\n')
- print(colorama.Fore.RESET)
- shift = [0] * 5
- for i in range(5):
- cnt = defaultdict(int)
- for j in range(i, n, 5):
- cnt[s[j]] += 1
- # print(s[j], end="")
- # print()
- chfreq = sorted([(y, x) for x, y in cnt.items()], reverse=True)
- shift[i] = (ord(chfreq[0][1])-ord('E'))%26
- print("key =", *[chr(ord('A')+x) for x in shift])
- out = [s[i:i+5] for i in range(0, n, 5)]
- for j in range(0, n, 5):
- for i in range(min(n-j, 5)):
- print(chr((ord(s[j+i]) - ord('A') - shift[i]) % 26 + ord('A')), end = "")
- # print()
Advertisement
Add Comment
Please, Sign In to add comment