RubyQuiz 用に Ruby 1.8 で記述されたコードを見ていますが、1.9.2 で実行するとエラーがスローされます。この方法
def encrypt(s)
return process(s) {|c, key| 64 + mod(c + key - 128)}
end
次のエラーが表示されます
in `+': String can't be coerced into Fixnum (TypeError)
これが私のコードです:
def mod(c)
return c - 26 if c > 26
return c + 26 if c < 1
return c
end
def process(s, &combiner)
s = sanitize(s)
out = ""
s.each_byte { |c|
if c >= 'A'.ord and c <= 'Z'.ord
key = @keystream.get
res = combiner.call(c, key[0])
out << res.chr
else
out << c.chr
end
}
return out
end