私はRubyで文字列を反転させる2つの方法があります。一方は真、もう一方は偽を出力しますが、両方とも私が望む応答を出力します。他の印刷が間違っている場合、なぜ1つの解決策が印刷されるのですか?
真実を示す解決策と同じ答えが得られたとしても、なぜそれが誤っていると言われますか?ここで
は、ソリューションおよびテストです:
def reverse(string)
new = ""
i = 0
length = string.length
while i < length do
new = new.to_s + string[-1, 1].to_s
string.chop!
if i >= string.length
break
end
end
puts new
end
def secondreverse(string)
new = ""
i = 0
length = string.length
while i < length do
new = string[i] + new
i += 1
end
return new
end
は、これらのコードが機能していることを確認するためのテストです。あなたの解決策を書いた後、彼らはすべて真実を印刷するべきです。あなた#reverse
機能で
puts("\nTests for #reverse")
puts("===============================================")
puts(
'secondreverse("abc") == "cba": ' + (secondreverse("abc") == "cba").to_s
)
puts(
'secondreverse("a") == "a": ' + (secondreverse("a") == "a").to_s
)
puts(
'secondreverse("") == "": ' + (secondreverse("") == "").to_s
)
puts("===============================================")
私は彼らがすべて真実を返すのを見ます。何を手に入れますか? –
変数の名前として 'new'を使うのは本当に悪い考えです。最終的には、あなたの将来の自己を含めて、コードを扱う他の誰かを混乱させます。一般に、 'new_str'や遍在的な' retval'のような、より記述的な名前を使用してください。 'new.to_s + string [-1、1] .to_s'は余分な文字列に2つの' to_s 'を使用してCPU時間を無駄にしています。 'string [-1、1]'は厄介です。 'string [-1]'は同じことを行います。 –
また、注意してください。あなたの最初の方法は、渡された文字列を削除することです。文字通りの文字列を渡すことはありませんが、変数を渡してからそれをチェックしてみてください。結果として、これが意図的であれば、メソッド名の最後に '!'を使用するべきです。 –