So I ran this
letters = ("a".."z").to_a.zip(("b".."z").to_a.push("a"))[["a", "b"], ["b", "c"], ["c", "d"], ["d", "e"], ["e", "f"], ["f", "g"], ["g", "h"], ["h", "i"], ["i", "j"], ["j", "k"], ["k", "l"], ["l", "m"], ["m", "n"], ["n", "o"], ["o", "p"], ["p", "q"], ["q", "r"], ["r", "s"], ["s", "t"], ["t", "u"], ["u", "v"], ["v", "w"], ["w", "x"], ["x", "y"], ["y", "z"], ["z", "a"]]
str = "Somebody help I am on drugs and can't program! Just kidding."
letters.each do |letter|
puts "#{letter[0]} #{letter[1]}"
str.gsub!(letter[0], letter[1])
puts str
end
and the output was
a b
Somebody help I bm on drugs bnd cbn't progrbm! Just kidding.
b c
Somecody help I cm on drugs cnd ccn't progrcm! Just kidding.
c d
Somedody help I dm on drugs dnd ddn't progrdm! Just kidding.
d e
Someeoey help I em on erugs ene een't progrem! Just kieeing.
e f
Somffofy hflp I fm on frugs fnf ffn't progrfm! Just kiffing.
f g
Somggogy hglp I gm on grugs gng ggn't progrgm! Just kigging.
g h
Somhhohy hhlp I hm on hruhs hnh hhn't prohrhm! Just kihhinh.
h i
Somiioiy iilp I im on iruis ini iin't proirim! Just kiiiini.
i j
Somjjojy jjlp I jm on jrujs jnj jjn't projrjm! Just kjjjjnj.
j k
Somkkoky kklp I km on kruks knk kkn't prokrkm! Just kkkkknk.
k l
Somlloly lllp I lm on lruls lnl lln't prolrlm! Just lllllnl.
l m
Sommmomy mmmp I mm on mrums mnm mmn't promrmm! Just mmmmmnm.
m n
Sonnnony nnnp I nn on nruns nnn nnn't pronrnn! Just nnnnnnn.
n o
Sooooooy ooop I oo oo oruos ooo ooo't prooroo! Just ooooooo.
o p
Sppppppy pppp I pp pp prups ppp ppp't prpprpp! Just ppppppp.
p q
Sqqqqqqy qqqq I qq qq qruqs qqq qqq't qrqqrqq! Just qqqqqqq.
q r
Srrrrrry rrrr I rr rr rrurs rrr rrr't rrrrrrr! Just rrrrrrr.
r s
Sssssssy ssss I ss ss ssuss sss sss't sssssss! Just sssssss.
s t
Stttttty tttt I tt tt ttutt ttt ttt't ttttttt! Jutt ttttttt.
t u
Suuuuuuy uuuu I uu uu uuuuu uuu uuu'u uuuuuuu! Juuu uuuuuuu.
u v
Svvvvvvy vvvv I vv vv vvvvv vvv vvv'v vvvvvvv! Jvvv vvvvvvv.
v w
Swwwwwwy wwww I ww ww wwwww www www'w wwwwwww! Jwww wwwwwww.
w x
Sxxxxxxy xxxx I xx xx xxxxx xxx xxx'x xxxxxxx! Jxxx xxxxxxx.
x y
Syyyyyyy yyyy I yy yy yyyyy yyy yyy'y yyyyyyy! Jyyy yyyyyyy.
y z
Szzzzzzz zzzz I zz zz zzzzz zzz zzz'z zzzzzzz! Jzzz zzzzzzz.
z a
Saaaaaaa aaaa I aa aa aaaaa aaa aaa'a aaaaaaa! Jaaa aaaaaaa.
So as you see, your code slowly replaces each letter so by the end every letter becomes a z
and is replaced by a
A solution to this is just iterating in reverse like this
letters.reverse_each do |letter|
str.gsub!(letter[0], letter[1])
end
Output is
Spnfcpez ifmq I bn po esvht boe dbo'u qsphsbn! Jvtu ljeejoh.