From 620e96f47171f5c7b3a4f0d6a1953200d5ea7cff Mon Sep 17 00:00:00 2001 From: Coralie Collignon Date: Wed, 9 Aug 2017 19:53:02 +0200 Subject: [PATCH 1/7] first method ecrypt --- encrypt.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 encrypt.rb diff --git a/encrypt.rb b/encrypt.rb new file mode 100644 index 0000000..01085fc --- /dev/null +++ b/encrypt.rb @@ -0,0 +1,18 @@ +def encrypted_message(message, key) + message_splitted = message.split("") + message_splitted.map! do |letter| + new_number = letter.ord + key + new_number.chr + end + message_splitted.join +end + + + + +key = 13 +message = "This is my secret" + +# do your encryption here + +puts encrypted_message(message, key) \ No newline at end of file From 10ea8b19c01436bba6a5dd1f6e4bc3896555323e Mon Sep 17 00:00:00 2001 From: Elodie Royant Date: Wed, 9 Aug 2017 20:06:56 +0200 Subject: [PATCH 2/7] decrypt method and class --- encrypt.rb | 27 ++++++++++++++++----------- encryption_engine.rb | 21 +++++++++++++++++++++ 2 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 encryption_engine.rb diff --git a/encrypt.rb b/encrypt.rb index 01085fc..ad64bcc 100644 --- a/encrypt.rb +++ b/encrypt.rb @@ -1,18 +1,23 @@ -def encrypted_message(message, key) - message_splitted = message.split("") - message_splitted.map! do |letter| - new_number = letter.ord + key - new_number.chr - end - message_splitted.join -end - - +# def encrypted_message(message, key) +# message_splitted = message.split("") +# message_splitted.map! do |letter| +# new_number = letter.ord + key +# new_number.chr +# end +# message_splitted.join +# end +require_relative 'encryption_engine' key = 13 message = "This is my secret" # do your encryption here -puts encrypted_message(message, key) \ No newline at end of file +# puts encrypted_message(message, key) + +engine = EncryptionEngine.new +output = engine.encrypt(message, key) +puts output # outputs "Zl Zrffntr" +output2 = engine.decrypt(output, key) +puts output2 # outputs "My Message" diff --git a/encryption_engine.rb b/encryption_engine.rb new file mode 100644 index 0000000..0d420ef --- /dev/null +++ b/encryption_engine.rb @@ -0,0 +1,21 @@ +class EncryptionEngine + + def encrypt(string, key) + message_splitted = string.split("") + message_splitted.map! do |letter| + new_number = letter.ord + key + new_number.chr + end + message_splitted.join + end + + def decrypt(string, key) + # Your code here + message_splitted = string.split("") + message_splitted.map! do |letter| + new_number = letter.ord - key + new_number.chr + end + message_splitted.join + end +end From eec400f4d922835fdce896a0c65db8e1561e41ac Mon Sep 17 00:00:00 2001 From: Coralie Collignon Date: Wed, 9 Aug 2017 20:15:23 +0200 Subject: [PATCH 3/7] realising tests --- encryption_engine_test.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 encryption_engine_test.rb diff --git a/encryption_engine_test.rb b/encryption_engine_test.rb new file mode 100644 index 0000000..7a40da7 --- /dev/null +++ b/encryption_engine_test.rb @@ -0,0 +1,10 @@ +require 'minitest/autorun' +require_relative 'encryption_engine' + +class EncryptionEngineTest < Minitest::Test + def test_it_encrypts_using_rot13 + engine = EncryptionEngine.new + output = engine.encrypt("My Message", 13) + assert_equal "Zl Zrffntr", output + end +end From 38e34fc85004b282fb7e2e17a9ed1fd6364fecd3 Mon Sep 17 00:00:00 2001 From: Elodie Royant Date: Wed, 9 Aug 2017 20:50:05 +0200 Subject: [PATCH 4/7] fixing the ascii pb --- encryption_engine.rb | 12 +++++++++--- .../encryption_engine_test.rb | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) rename encryption_engine_test.rb => test/encryption_engine_test.rb (85%) diff --git a/encryption_engine.rb b/encryption_engine.rb index 0d420ef..5b77600 100644 --- a/encryption_engine.rb +++ b/encryption_engine.rb @@ -1,12 +1,18 @@ class EncryptionEngine def encrypt(string, key) - message_splitted = string.split("") + message_splitted = string.downcase.split("") message_splitted.map! do |letter| - new_number = letter.ord + key + if letter.ord + key > "z".ord + new_number = letter.ord + key - 1 - "z".ord + "a".ord + else + new_number = letter.ord + key + end + new_number = 32 if new_number == 45 new_number.chr end - message_splitted.join + res = message_splitted.join + res.split(" ").map {|word| word.capitalize}.join(" ") end def decrypt(string, key) diff --git a/encryption_engine_test.rb b/test/encryption_engine_test.rb similarity index 85% rename from encryption_engine_test.rb rename to test/encryption_engine_test.rb index 7a40da7..00477c8 100644 --- a/encryption_engine_test.rb +++ b/test/encryption_engine_test.rb @@ -1,5 +1,5 @@ require 'minitest/autorun' -require_relative 'encryption_engine' +require_relative '../encryption_engine' class EncryptionEngineTest < Minitest::Test def test_it_encrypts_using_rot13 From a4c073746314dbdf00d34a6ba935e5912730f21b Mon Sep 17 00:00:00 2001 From: Coralie Collignon Date: Wed, 9 Aug 2017 21:10:05 +0200 Subject: [PATCH 5/7] passing tests --- encryption_engine.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/encryption_engine.rb b/encryption_engine.rb index 5b77600..d338272 100644 --- a/encryption_engine.rb +++ b/encryption_engine.rb @@ -1,6 +1,7 @@ class EncryptionEngine def encrypt(string, key) + array_capitals = string.split("").map { |letter| capitalized?(letter) } message_splitted = string.downcase.split("") message_splitted.map! do |letter| if letter.ord + key > "z".ord @@ -11,8 +12,17 @@ def encrypt(string, key) new_number = 32 if new_number == 45 new_number.chr end - res = message_splitted.join - res.split(" ").map {|word| word.capitalize}.join(" ") + + result = [] + message_splitted.each_with_index do |letter, index| + letter.upcase! if array_capitals[index] + result << letter + end + result.join + end + + def capitalized?(letter) + letter == letter.upcase end def decrypt(string, key) From d82fac1c732bb410fd3f48e1ce66249ff643504e Mon Sep 17 00:00:00 2001 From: Elodie Royant Date: Wed, 9 Aug 2017 22:26:21 +0200 Subject: [PATCH 6/7] last callllllllllll --- encryption_engine.rb | 15 +++++++++++++-- test/encryption_engine_test.rb | 6 ++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/encryption_engine.rb b/encryption_engine.rb index d338272..2406dd2 100644 --- a/encryption_engine.rb +++ b/encryption_engine.rb @@ -21,12 +21,21 @@ def encrypt(string, key) result.join end - def capitalized?(letter) - letter == letter.upcase + def capitalized?(string) + string.split("").map { |letter| letter == letter.upcase } + end + + def capitalize_array(array) + result = [] + array.each_with_index do |letter, index| + letter.upcase! if capitalized?[index] + result << letter + end end def decrypt(string, key) # Your code here + message_splitted = string.split("") message_splitted.map! do |letter| new_number = letter.ord - key @@ -34,4 +43,6 @@ def decrypt(string, key) end message_splitted.join end + + end diff --git a/test/encryption_engine_test.rb b/test/encryption_engine_test.rb index 00477c8..2e191dd 100644 --- a/test/encryption_engine_test.rb +++ b/test/encryption_engine_test.rb @@ -7,4 +7,10 @@ def test_it_encrypts_using_rot13 output = engine.encrypt("My Message", 13) assert_equal "Zl Zrffntr", output end + + def test_it_decrypts_using_rot13 + engine = EncryptionEngine.new + output = engine.decrypt("Guvf vf zl frperg", 13) + assert_equal "This is my secret", output + end end From 00aa5462e3ee90080fad067a787e455f5e0b71c0 Mon Sep 17 00:00:00 2001 From: Elodie Royant Date: Thu, 10 Aug 2017 15:28:44 +0200 Subject: [PATCH 7/7] a possible refacto :) --- encryption_engine.rb | 46 ++++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/encryption_engine.rb b/encryption_engine.rb index 2406dd2..b015b48 100644 --- a/encryption_engine.rb +++ b/encryption_engine.rb @@ -1,48 +1,36 @@ class EncryptionEngine def encrypt(string, key) - array_capitals = string.split("").map { |letter| capitalized?(letter) } - message_splitted = string.downcase.split("") - message_splitted.map! do |letter| - if letter.ord + key > "z".ord - new_number = letter.ord + key - 1 - "z".ord + "a".ord - else - new_number = letter.ord + key - end - new_number = 32 if new_number == 45 + message_splitted = string.split("") + result = message_splitted.map do |letter| + new_number = letter.ord + key + # if rotation of ascii number is greater than (Z|z).ord : -26 (back to (A|a)) + new_number -= 26 if letter.ord + key > max_AZ(letter) + # keep space and punctuation unchanged + new_number = letter.ord if /\W+/.match(letter) new_number.chr end - - result = [] - message_splitted.each_with_index do |letter, index| - letter.upcase! if array_capitals[index] - result << letter - end result.join end - def capitalized?(string) - string.split("").map { |letter| letter == letter.upcase } - end - - def capitalize_array(array) - result = [] - array.each_with_index do |letter, index| - letter.upcase! if capitalized?[index] - result << letter + # max_AZ refer to "Z".ord if letter is capitalized, "z" if not + def max_AZ(letter) + if letter.ord >= 65 && letter.ord <= 90 + return 90 + else + return 122 end end def decrypt(string, key) - # Your code here - message_splitted = string.split("") - message_splitted.map! do |letter| + result = message_splitted.map do |letter| new_number = letter.ord - key + new_number += 26 if letter.ord - key < max_AZ(letter) - 26 + new_number = letter.ord if /\W+/.match(letter) new_number.chr end - message_splitted.join + result.join end - end