From 476a24c90044177af9670ac654b5c81f0cf8bbae Mon Sep 17 00:00:00 2001 From: KKlochko Date: Thu, 12 Oct 2023 21:51:29 +0300 Subject: [PATCH] Fix the typo "frequences" to frequencies. --- .../analyzers/analyzers.clj | 6 ++-- .../analyzers/caesar.clj | 12 ++++---- src/cipher_analytical_machine/cli/cli.clj | 4 +-- .../symbols/frequences.clj | 2 +- .../analyzers/caesar_test.clj | 28 +++++++++---------- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/cipher_analytical_machine/analyzers/analyzers.clj b/src/cipher_analytical_machine/analyzers/analyzers.clj index 74ea2df..d463afe 100644 --- a/src/cipher_analytical_machine/analyzers/analyzers.clj +++ b/src/cipher_analytical_machine/analyzers/analyzers.clj @@ -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 diff --git a/src/cipher_analytical_machine/analyzers/caesar.clj b/src/cipher_analytical_machine/analyzers/caesar.clj index aa16145..6bc5af2 100644 --- a/src/cipher_analytical_machine/analyzers/caesar.clj +++ b/src/cipher_analytical_machine/analyzers/caesar.clj @@ -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 diff --git a/src/cipher_analytical_machine/cli/cli.clj b/src/cipher_analytical_machine/cli/cli.clj index 3568516..22b1841 100644 --- a/src/cipher_analytical_machine/cli/cli.clj +++ b/src/cipher_analytical_machine/cli/cli.clj @@ -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) diff --git a/src/cipher_analytical_machine/symbols/frequences.clj b/src/cipher_analytical_machine/symbols/frequences.clj index 491c475..c9e0ac4 100644 --- a/src/cipher_analytical_machine/symbols/frequences.clj +++ b/src/cipher_analytical_machine/symbols/frequences.clj @@ -1,4 +1,4 @@ -(ns cipher-analytical-machine.symbols.frequences +(ns cipher-analytical-machine.symbols.frequencies (:gen-class)) (def english-letter-frequences { diff --git a/test/cipher_analytical_machine/analyzers/caesar_test.clj b/test/cipher_analytical_machine/analyzers/caesar_test.clj index 894755a..b5a113b 100644 --- a/test/cipher_analytical_machine/analyzers/caesar_test.clj +++ b/test/cipher_analytical_machine/analyzers/caesar_test.clj @@ -2,7 +2,7 @@ (:require [clojure.test :refer :all] [cipher-analytical-machine.analyzers.caesar :refer :all] - [cipher-analytical-machine.symbols.frequences :as sf] + [cipher-analytical-machine.symbols.frequencies :as sf] [cipher-analytical-machine.analyzers.analyzers :as ca] [clojure.string :as cs])) @@ -25,9 +25,9 @@ (testing "There're 27 combinations for a 'Hello World'." (let [ciphertext "khoorczruog" symbols "abcdefghijklmnopqrstuvwxyz " - frequences sf/english-letter-frequences + frequencies sf/english-letter-frequencies text-pairs (get-all-texts ciphertext symbols)] - (is (= 27 (count (get-all-scores frequences text-pairs))))))) + (is (= 27 (count (get-all-scores frequencies text-pairs))))))) (deftest get-min-score-pair-test (testing "If a key is one, then the min score pair is 15." @@ -40,47 +40,47 @@ ciphertext "khoorczruog" key 3 symbols "abcdefghijklmnopqrstuvwxyz " - frequences sf/english-letter-frequences] + frequencies sf/english-letter-frequencies] (testing "The plaintext is encrypted with 3 as the key." - (is (= key (get-key ciphertext symbols frequences))))) + (is (= key (get-key ciphertext symbols frequencies))))) (let [; З поеми "Кавказ" Тараса Григоровича Шевченка: plaintext "Борітеся – поборете, Вам Бог помагає! За вас правда, за вас слава. І воля святая!" ciphertext "жхчощйшде–ецхжхчйщй,езєуежхиецхуєиєк!емєезєшецчєзїє,емєезєшештєзє.еоезхтдешздщєд!" key 7 symbols "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя " - frequences sf/ukrainian-letter-frequences] + frequencies sf/ukrainian-letter-frequencies] (testing "The plaintext is encrypted with 3 as the key." - (is (= key (get-key ciphertext symbols frequences)))))) + (is (= key (get-key ciphertext symbols frequencies)))))) (deftest get-plaintext-test (let [plaintext "hello world" ciphertext "khoorczruog" symbols "abcdefghijklmnopqrstuvwxyz " - frequences sf/english-letter-frequences] + frequencies sf/english-letter-frequencies] (testing "The plaintext is encrypted with 3 as the key." - (is (= plaintext (get-plaintext ciphertext symbols frequences)))) + (is (= plaintext (get-plaintext ciphertext symbols frequencies)))) (testing "The ciphertext is case-insensitive." - (is (= plaintext (get-plaintext "KhoorcZruog" symbols frequences))))) + (is (= plaintext (get-plaintext "KhoorcZruog" symbols frequencies))))) (let [; З поеми "Кавказ" Тараса Григоровича Шевченка: plaintext "Борітеся – поборете, Вам Бог помагає! За вас правда, за вас слава. І воля святая!" ciphertext "жхчощйшде–ецхжхчйщй,езєуежхиецхуєиєк!емєезєшецчєзїє,емєезєшештєзє.еоезхтдешздщєд!" key 7 symbols "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя " - frequences sf/ukrainian-letter-frequences] + frequencies sf/ukrainian-letter-frequencies] (testing "The ciphertext is case-insensitive." (is (= (cs/lower-case plaintext) - (get-plaintext ciphertext symbols frequences)))))) + (get-plaintext ciphertext symbols frequencies)))))) (deftest frequency-analizer-get-plaintext-test (let [plaintext "abc" ciphertext "bca" key 1 symbols "abc" - frequences sf/english-letter-frequences] + frequencies sf/english-letter-frequencies] (testing "The ciphertext is 'bca' and key is 1." (is (= plaintext - (frequency-analizer-get-plaintext ciphertext symbols frequences)))))) + (frequency-analizer-get-plaintext ciphertext symbols frequencies))))))