def caesar(text,shift) count = 0 decoded = '' while(count<text.size) decoded << (text[count]+shift).chr count += 1 end decoded end
Refactorings
No refactoring yet !
Carl Porth
August 9, 2008, August 09, 2008 06:49, permalink
I've always seen shifts done with the unix tr command. You can do the same in ruby. Additionally this method handles the rotation of chars like
caesar("ABCDEF",22) #=> "WXYZAB"
def caesar(text,n)
alpha = ('A'..'Z').to_a
n.times { alpha.push(alpha.shift) }
text.tr('A-Z', alpha.join)
end
Fabien Jakimowicz
August 9, 2008, August 09, 2008 11:34, permalink
def caesar(text, shift)
text.split('').collect {|letter| (letter[0] + shift).chr}.join
end
Maciej Piechotka
August 10, 2008, August 10, 2008 18:43, permalink
Modification of Fabien Jakimowicz's code
def caesar(text, shift)
text.split('').collect! {|letter| (letter[0] + shift).chr}.join
end
Jonas Elfström
September 10, 2009, September 10, 2009 12:32, permalink
Handles negative offsets.
def caesar(text,shift)
shift = shift<0 ? 26-shift%26 : shift%26
ab=('a'..'z').to_a*2
text.downcase.tr('a-z', ab[shift..shift+26].join)
end
Neld
April 4, 2011, April 04, 2011 18:10, permalink
asd
E A É Ű V É C A É V C L S G C H S ŠT É L S G C H S V Y R L S G C H S É V C A C L S G C H S H M L S G C H S A L V É M V K Z T L S G C H S É W S V Ű L S G C H S E W Y L S G C H S K H Z H Y L S L S G C H S A L V É M V K V à A S G Ű Ú T É L S G C H S E W K ŠV V É M V K V É É V C L S G C H S É A É Ü L L S G C H S V D I Ű B V V É M V K T L S G C H S L S U E F C T M L S G C H S C V Ű ŠV D B Ó C V É M V K T S L S G C H S V D L I M L S G C H S É V E L S G C H S X V B V D M B Ó C V É M V K T L S G C H S X T Y R A M L S G C H S É V E L S G C H S L S V K V M B Ó C V É M V K T L S G C H S L S V Ú Ú A C L S G C H S É V E V M L S G C H S C V K V L L Ó C V É M V K T L S G C H S C V K V L V M M L S G C H S K W L S Ú I D V É M V K M T D U D Ű L S G C H S C A L S G C H S C A M L S G C H S C V K V L L L S G C H S T L S G C H S Y L S A Ú I D
A Caesar Cipher, or Caesar Shift, is a simple encryption method which substitutes the letter based on a fixed number movement. An example:
if the shift is set at 1,
than
caesar("ABCDEF",1) #=> "BCDEFG"