Skip to content

Instantly share code, notes, and snippets.

@it6c65
Last active October 20, 2020 05:09
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 it6c65/b1507d7f71166fa9e446b86b1a208a4d to your computer and use it in GitHub Desktop.
Save it6c65/b1507d7f71166fa9e446b86b1a208a4d to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
class Integer
@@range_upper = (65..90)
@@range_lower = (97..122)
def upper?
@@range_upper.include? self
end
def lower?
@@range_lower.include? self
end
def self.max_upper
@@range_upper.max
end
def self.max_lower
@@range_lower.max
end
end
def caesar(text,shift)
result = ""
text.each_char do |letter|
sequence = letter.ord
if sequence.upper?
next_letter = sequence + shift
next_letter -= 26 if next_letter > Integer.max_upper
elsif sequence.lower?
next_letter = sequence + shift
next_letter -= 26 if next_letter > Integer.max_lower
else
next_letter = sequence
end
result += next_letter.chr
end
return result
end
puts caesar("What a String!",5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment