def caesar_cipher(string, shift_factor)
string.length.times do |i|
if string[i].ord >= 97 && (string[i].ord + shift_factor) <= 122 || string[i].ord >= 65 && (string[i].ord + shift_factor) <= 90
string[i] = (string[i].ord + shift_factor).chr
elsif string[i].ord >= 97 && string[i].ord <= 122 || string[i].ord >= 65 && string[i].ord <= 90
string[i] = (string[i].ord + shift_factor - 122 + 96).chr
end
end
string
end
puts "Enter a string:"
string_input = gets.chomp
puts "Enter shift factor:"
shift_factor_input = gets.chomp.to_i
result_string = caesar_cipher(string_input, shift_factor_input)
puts result_string
https://github.com/OlehSliusar/caesar_cipher誰かがこのRubyコードの2行目から9行目まで説明できますか?
列とシフト係数を取り込み、その後、変更された文字列を出力するコマンドラインシーザー暗号。
私はコード行2を9行目で理解できません。私は混乱しています。この文脈では回の方法が使用される。誰かが私に2行目から9行目まで何をしているのか説明してもらえますか?私がどのように理解したか。メソッドは、指定された時間数に基づいて繰り返しとして反復子として機能するということです。
だから5.times { puts "Dog" }
=>とすると、「Dog」が5回置かれます。したがって、方法に関する私の理解。は、著者がそれを使用した方法とは非常に異なっています。
SOユーザーは怠け者であるため、コードを見るためのリンクには行きません。ここに貼り付けてください。 – corn3lius
'.times'がここで意図した通りに使用されます。 msgstr "この文字列に文字がある回数だけこのループを実行し、現在の反復インデックスをブロックに渡します" msgid。そしてブロックは、渡されたインデックスで何かをすることができます。この場合、それはシーザー暗号のことです(何らかのロジックに基づいて現在のchar、 'string [i]'を変更します) –
@SergioTulentsevこんにちは文字列[i]はどういう意味ですか? 3行目 – roppo