私はコード演習としてCaesar Cipherを構築していました。私はコードスニペットをいくつか見つけ出していますが、なぜ動作するのか分からず、誰かが作品ごとに作品を説明できるかどうか疑問に思っていました。これはRubyの初心者が実際のコードの実装を説明することでさまざまなタイプのコードのビルディングブロックを理解するのに役立ちます。Ruby Caesar Cipherの説明
caesar_string = ""
文字列の各文字を反復(string.each_char
が、今日好ましいであろうことに注意してください):
def caesar_cipher (string, number)
caesar_string = ""
string.scan (/./) do |i|
if ("a".."z").include? (i.downcase) # Identify letters only.
number.times {i = i.next}
end
caesar_string << i[-1]
end
return caesar_string
end
print "What would you like to encrypt?"
text = gets.chomp
puts caesar_cipher(text, 5)
あなたはどちらの部分を理解していませんか? –
より良い方法は 'string.gsub(/ [a-z]/i){| s | (s.ord + number).chr} 'となります。 – sawa
@sawa。あなたの「より良い」方法は、「z」から「a」に再びループしないという欠点があります。上記のコードで 'W' + 5が' B'であれば、あなたのコードで '\\'になります。 –