+ "kb, sb = beaufort_frequency_break(cb)\n",
+ "kb, sb"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "In his Journal dated the Ides of October in the year of the consulships of Caecelius Tullius Capito\n",
+ "Pomponianus Plotius Firmus and Gaius Cornelius Gallicanus, Agricola wrote “The mystery of the battle\n",
+ "at Camulodonum is at last solved. Calgacus may be a Barbarian now, but he was a Roman citizen then,\n",
+ "who betrayed us all for love of a barbarian. It has taken all my skills as a leader of men to keep\n",
+ "him alive. The Legionnaires spend their evenings designing new and cruel ways to execute him in\n",
+ "revenge for the shame he brought upon us, but his life is precious. It is the only card left to play\n",
+ "in our search for salvation and the return of the stolen Aquilae. If we can also recover the Codex\n",
+ "then perhaps its loss can be concealed and our lives will be spared.” Releasing the Roman traitor\n",
+ "Calgacus must have stuck in the proud Agricola’s throat, but he made a pact with the remaining\n",
+ "Caledonii and travelled north to exchange the prisoner for the Aquilae and the Codex. But the\n",
+ "cunning Caledonian tribesman set another trap and presented Agricola with a forgery cunningly\n",
+ "assembled with pages from the books stolen when the tribe ransacked Mons Graupius. For too long the\n",
+ "sons of Rome had underestimated the people in Britannia and while the Aquila of the Legion had been\n",
+ "restored by the exchange, their honour was not. Agricola faced a return to Rome, humiliation and\n",
+ "almost certain death. The sixth chapter of my tale of woe is guarded by lightning, bull and oak.\n"
+ ]
+ }
+ ],
+ "source": [
+ "pub = depunctuate(cb)\n",
+ "pb = beaufort_decipher(scb, kb)\n",
+ "print(lcat(tpack(repunctuate(pb, pub).split())))"