解決したいこと
表題の件、以下の問題を回答していて、つまづきました。
※ruby 2.5.1
↓↓
3つの整数a b cが与えられた場合、bまたはcがaとの差が1で、かつbとcとの数値の差が2以上の場合はTrue。
それ以外はFalseと出力するメソッドを作りましょう。
出力例:
close_far(1, 2, 10) → True
close_far(1, 2, 3) → False
close_far(4, 1, 3) → True
#自分の回答
ruby
1def close_far(a, b, c) 2 if ((b-a).abs = 1 || (c-a).abs = 1) && (b-c).abs >= 2 3 p "True" 4 else 5 p "False" 6 end 7end
最初はこれでいけると思って書いていたのですが、実際に動かしてみると以下のエラーが発生しました。
ruby
1Traceback (most recent call last): 2 3: from /Users/tachimorikenzo/.rbenv/versions/2.5.1/bin/irb:11:in `<main>' 3 2: from (irb):97 4 1: from (irb):91:in `close_far' 5NoMethodError (undefined method `abs=' for 1:Integer) 6Did you mean? abs 7 abs2
#改善した回答
上記のエラーから以下の内容に修正したところ、動きました。
ruby
1def close_far(a, b, c) 2 ba = (b-a).abs 3 ca = (c-a).abs 4 bc = (b-c).abs 5 if (ba = 1 || ca = 1) && bc >= 2 6 p "True" 7 else 8 p "False" 9 end 10end
#何を知りたいか
上記のエラーと回答から、if分の中ではメソッドが使用できないように見て取れたのですが、
その認識で合っているのでしょうか?
それとも、別の部分に問題があるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/22 05:54