Fix the typo "frequences" to frequencies.

This commit is contained in:
2023-10-12 22:00:01 +03:00
parent 4d7e9da1d1
commit 476a24c900
5 changed files with 26 additions and 26 deletions
@@ -21,16 +21,16 @@
(defn chi-squared-statistic
"To calculate the frequency distribution of a language. More detail about the algorithm here: http://practicalcryptography.com/cryptanalysis/text-characterisation/chi-squared-statistic/"
[text letter-frequences]
[text letter-frequencies]
(let [length-text (count text)
letter-counts (count-characters (cs/lower-case text))]
;letter-counts
(reduce
(fn [acc [char count]]
(+ acc
(if (contains? letter-frequences char)
(if (contains? letter-frequencies char)
(chi-squared-letter-statistic count
(get letter-frequences char)
(get letter-frequencies char)
length-text)
0)))
0
@@ -17,9 +17,9 @@
(defn get-all-scores
"For pairs (key, plaintext) finds scores and return list of pairs [key, score]."
[letter-frequences pairs]
[letter-frequencies pairs]
(map (fn [[key text]]
[key (ca/chi-squared-statistic text letter-frequences)])
[key (ca/chi-squared-statistic text letter-frequencies)])
pairs))
(defn get-min-score-pair
@@ -34,18 +34,18 @@
(defn get-key
"To find the key with frequencies of letters."
[ciphertext symbols letter-frequences]
[ciphertext symbols letter-frequencies]
(->> (get-all-texts ciphertext symbols)
(get-all-scores letter-frequences)
(get-all-scores letter-frequencies)
(get-min-score-pair)
(first)))
(defn get-plaintext
"Return the plaintext from a ciphertext. The function is case-insensitive."
[ciphertext symbols letter-frequences]
[ciphertext symbols letter-frequencies]
(let [ciphertext (cs/lower-case ciphertext)]
(caesar/decrypt-message ciphertext
(get-key ciphertext symbols letter-frequences)
(get-key ciphertext symbols letter-frequencies)
symbols)))
(defn frequency-analizer-get-plaintext
+2 -2
View File
@@ -4,7 +4,7 @@
[cipher-analytical-machine.ciphers.caesar :as caesar]
[cipher-analytical-machine.analyzers.caesar :as caesar-analyzers]
[cipher-analytical-machine.symbols.factories :as sf]
[cipher-analytical-machine.symbols.frequences :as symbol-frequences]
[cipher-analytical-machine.symbols.frequencies :as symbol-frequencies]
[clojure.string :as cs]
[clojure.tools.cli :refer [parse-opts]])
(:gen-class))
@@ -155,7 +155,7 @@
[options arguments action-type]
(let [message (:message options)
symbols (:symbols options)
frequencies symbol-frequences/english-letter-frequences]
frequencies symbol-frequencies/english-letter-frequencies]
(cond
(= action-type :cracking)
(caesar-analyzers/get-plaintext message symbols frequencies)
@@ -1,4 +1,4 @@
(ns cipher-analytical-machine.symbols.frequences
(ns cipher-analytical-machine.symbols.frequencies
(:gen-class))
(def english-letter-frequences {