問題
任意の2つの文字列があります。
大文字と小文字の違いを無視して、どちらかの文字がもう一方の文字の最後にある場合はTrueを、ない場合はFalseを出力するプログラムを作りましょう。
自分の回答
def end_other(a, b)
a = a.downcase.reverse
b = b.downcase.reverse
p a.slice(0..b.length - 1)
p b
if a.slice(0..b.length - 1) == b || b.slice(0..a.length - 1) == a
puts "True"
else
puts "False"
end
end
まず、「大文字と小文字の違いを無視する」と言う事なので、downcaseメソッドを使って、小文字に揃えます。また、簡単のため、reverseメソッドを使って文字列を反転させます。
次にif文の分岐を例を使って、見ていきましょう。
例
a = 'Hiabc', b = 'abc'
downcaseとreverseを使って小文字化&反転
a = a.downcase.reverse = cbaih
b = b.downcase.reverse = cba
a.slice(0..b.length - 1) == b の部分を見ていきます。
b.length = 3 となるのでここから1を引いて、sliceで切り取ると
a.slice(0..2) = cba
となります。これがbと等しければ、"True"を返します。