Skip to content

Instantly share code, notes, and snippets.

@dudo
Created December 2, 2019 20:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dudo/3882f634cb8f5973783735116395b3cd to your computer and use it in GitHub Desktop.
Save dudo/3882f634cb8f5973783735116395b3cd to your computer and use it in GitHub Desktop.
class String
def encrypt(k)
lower_alphabet = [*'a'..'z']
lower_translation_map = lower_alphabet.zip(lower_alphabet.rotate(k%26)).to_h
upper_alphabet = [*'A'..'Z']
upper_translation_map = upper_alphabet.zip(upper_alphabet.rotate(k%26)).to_h
translation_map = lower_translation_map.merge(upper_translation_map)
chars.map { |char| translation_map[char] || char }.join
end
def decrypt(k)
lower_alphabet = [*'a'..'z']
lower_translation_map = lower_alphabet.rotate(k%26).zip(lower_alphabet).to_h
upper_alphabet = [*'A'..'Z']
upper_translation_map = upper_alphabet.rotate(k%26).zip(upper_alphabet).to_h
translation_map = lower_translation_map.merge(upper_translation_map)
chars.map { |char| translation_map[char] || char }.join
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment