mirror of
https://github.com/Smaug123/ClassicalCiphers.jl
synced 2025-10-07 10:28:40 +00:00
Merge pull request #8 from Smaug123/pull-request/cedfbbf2
Add Simon Singh test; bugfixes
This commit is contained in:
@@ -36,7 +36,7 @@ With cleverness=1, maximises the string's total fitness.
|
||||
Converts the input to lowercase.
|
||||
"""
|
||||
function crack_caesar(ciphertext; cleverness=1)
|
||||
texts = [(decrypt_caesar(ciphertext,key), key) for key in 1:26]
|
||||
texts = [(decrypt_caesar(ciphertext,key), key) for key in 0:25]
|
||||
if cleverness == 1
|
||||
texts = sort(texts, by=(x -> string_fitness(first(x))))
|
||||
else
|
||||
|
@@ -66,7 +66,7 @@ function crack_vigenere(plaintext; keylength=0)
|
||||
end
|
||||
end
|
||||
|
||||
derived_key = join([crack_caesar(st)[2] for st in everyother], "")
|
||||
derived_key = join([Char(65+crack_caesar(st)[2]) for st in everyother], "")
|
||||
(derived_key, takebuf_string(ans))
|
||||
|
||||
end
|
@@ -6,3 +6,12 @@ using Base.Test
|
||||
@test decrypt_caesar("WKLV FRGH ZDV LQYHQWHG EB MXOLXV FDHVDU", 3) == "this code was invented by julius caesar"
|
||||
|
||||
@test crack_caesar("WKLV FRGH ZDV LQYHQWHG EB MXOLXV FDHVDU") == ("this code was invented by julius caesar", 3)
|
||||
|
||||
@test crack_caesar("there is nothing to fear") == ("there is nothing to fear", 0)
|
||||
|
||||
# Simon Singh's Cipher Challenge
|
||||
|
||||
@test (
|
||||
singh = "MHILY LZA ZBHL XBPZXBL MVYABUHL HWWPBZ JSHBKPBZ JHLJBZ KPJABT HYJHUBT LZA ULBAYVU";
|
||||
singh_ans = lowercase("FABER EST SUAE QUISQUE FORTUNAE APPIUS CLAUDIUS CAECUS DICTUM ARCANUM EST NEUTRON");
|
||||
crack_caesar(singh) == (singh_ans, 7))
|
@@ -9,3 +9,4 @@ using Base.Test
|
||||
@test decrypt_monoalphabetic("5@coD", Dict{Char, Char}('a' => '5', 'B' => '@', 'b' => 'o', 'D' => 'D')) == "aBcbD"
|
||||
|
||||
@test decrypt_monoalphabetic("WKLV FRGH ZDV LQYHQWHG EB MXOLXV FDHVDU", "DEFGHIJKLMNOPQRSTUVWXYZABC") == lowercase("THIS CODE WAS INVENTED BY JULIUS CAESAR")
|
||||
|
||||
|
@@ -14,3 +14,26 @@ using Base.Test
|
||||
@test decrypt_vigenere("DYIMXMESTEZDPNFVVAMJ", "kremlin") == "theamericanshaverobb"
|
||||
|
||||
@test encrypt_vigenere("THEAMERICANSHAVEROBB", "kremlin") == "DYIMXMESTEZDPNFVVAMJ"
|
||||
|
||||
# Simon Singh's Cipher Challenge
|
||||
|
||||
@test (
|
||||
singh = "KQOWEFVJPUJUUNUKGLMEKJINMWUXFQMKJBGWRLFNFGHUDWUUMBSVLPSNCMUEKQCTESWREE
|
||||
KOYSSIWCTUAXYOTAPXPLWPNTCGOJBGFQHTDWXIZAYGFFNSXCSEYNCTSSPNTUJNYTGGWZGR
|
||||
WUUNEJUUQEAPYMEKQHUIDUXFPGUYTSMTFFSHNUOCZGMRUWEYTRGKMEEDCTVRECFBDJQCUS
|
||||
WVBPNLGOYLSKMTEFVJJTWWMFMWPNMEMTMHRSPXFSSKFFSTNUOCZGMDOEOYEEKCPJRGPMUR
|
||||
SKHFRSEIUEVGOYCWXIZAYGOSAANYDOEOYJLWUNHAMEBFELXYVLWNOJNSIOFRWUCCESWKVI
|
||||
DGMUCGOCRUWGNMAAFFVNSIUDEKQHCEUCPFCMPVSUDGAVEMNYMAMVLFMAOYFNTQCUAFVFJN
|
||||
XKLNEIWCWODCCULWRIFTWGMUSWOVMATNYBUHTCOCWFYTNMGYTQMKBBNLGFBTWOJFTWGNTE
|
||||
JKNEEDCLDHWTVBUVGFBIJGYYIDGMVRDGMPLSWGJLAGOEEKJOFEKNYNOLRIVRWVUHEIWUUR
|
||||
WGMUTJCDBNKGMBIDGMEEYGUOTDGGQEUJYOTVGGBRUJYS";
|
||||
singh_ans = "SOUVENTPOURSAMUSERLESHOMMESDEQUIPAGEPRENNENTDESALBATROSVASTESOISEAUXDE
|
||||
SMERSQUISUIVENTINDOLENTSCOMPAGNONSDEVOYAGELENAVIREGLISSANTSURLESGOUFFR
|
||||
ESAMERSAPEINELESONTILSDEPOSESSURLESPLANCHESQUECESROISDELAZURMALADROITS
|
||||
ETHONTEUXLAISSENTPITEUSEMENTLEURSGRANDESAILESBLANCHESCOMMEDESAVIRONSTR
|
||||
AINERACOTEDEUXCEVOYAGEURAILECOMMEILESTGAUCHEETVEULELUINAGUERESIBEAUQUI
|
||||
LESTCOMIQUEETLAIDLUNAGACESONBECAVECUNBRULEGUEULELAUTREMIMEENBOITANTLIN
|
||||
FIRMEQUIVOLAITLEPOETEESTSEMBLABLEAUPRINCEDESNUEESQUIHANTELATEMPETEETSE
|
||||
RITDELARCHERBAUDELAIREEXILESURLESOLAUMILIEUDESHUEESLEMOTPOURETAGEQUATR
|
||||
EESTTRAJANSESAILESDEGEANTLEMPECHENTDEMARCHER";
|
||||
crack_vigenere(singh) == ("SCUBA", lowercase(ClassicalCiphers.letters_only(singh_ans))))
|
Reference in New Issue
Block a user