Done challenge 9
[cipher-challenge.git] / 2020 / 2020-challenge3.md
1 ---
2 jupyter:
3 jupytext:
4 formats: ipynb,md
5 text_representation:
6 extension: .md
7 format_name: markdown
8 format_version: '1.2'
9 jupytext_version: 1.3.4
10 kernelspec:
11 display_name: Python 3
12 language: python
13 name: python3
14 ---
15
16 ```python Collapsed="false"
17 from szyfrow.affine import *
18 from szyfrow.keyword_cipher import *
19 ```
20
21 ```python Collapsed="false"
22 challenge_number = 3
23 plaintext_a_filename = f'plaintext.{challenge_number}a.txt'
24 plaintext_b_filename = f'plaintext.{challenge_number}b.txt'
25 ciphertext_a_filename = f'ciphertext.{challenge_number}a.txt'
26 ciphertext_b_filename = f'ciphertext.{challenge_number}b.txt'
27 ```
28
29 ```python Collapsed="false"
30 ca = open(ciphertext_a_filename).read()
31 sca = sanitise(ca)
32 cb = open(ciphertext_b_filename).read()
33 scb = sanitise(cb)
34 ```
35
36 ```python Collapsed="false"
37 (word_a, wrap_a), score_a = keyword_break_mp(sca, fitness=Ptrigrams)
38 print(word_a, wrap_a, '\n')
39 pa = keyword_decipher(ca, word_a, wrap_a)
40 print(pa)
41 ```
42
43 ```python Collapsed="false"
44 open(plaintext_a_filename, 'w').write(pa)
45 ```
46
47 ```python Collapsed="false"
48 (word_b, wrap_b), score_b = keyword_break_mp(scb, fitness=Ptrigrams)
49 print(word_b, wrap_b, '\n')
50 pb = keyword_decipher(cb, word_b, wrap_b)
51 print(pb)
52 ```
53
54 ```python Collapsed="false"
55 word_b, score_b = simulated_annealing_break(scb, fitness=Ptrigrams)
56 print(word_b, '\n')
57 pb = keyword_decipher(cb, word_b)
58 print(pb)
59 ```
60
61 ```python Collapsed="false"
62 keyword_decipher(cb, 'caistor', KeywordWrapAlphabet.from_last)
63 ```
64
65 ```python Collapsed="false"
66 open(plaintext_b_filename, 'w').write(pb)
67 ```
68
69 ```python Collapsed="false"
70
71 ```