问题是创建一个函数,它将三个数字作为输入并返回true或false,具体取决于这三个数字是否可以形成三角形。如果任意两边的总和大于第三边,则三个数字可以形成三角形。
我的回答是:
def is_triangle(a,b,c)
if a+b > c
return true
elsif a+c>b
return true
elsif b+c>a
return true
else
return false
end
end
事情是:我假设的假回报继续回归真实。请帮忙!
答案 0 :(得分:4)
此逻辑适用于查找三角形
def is_triangle?(a,b,c)
sorted = [a,b,c].sort
greatest_side = sorted.pop
greatest_side < sorted.sum
end
答案 1 :(得分:3)
又一种方法:
def is_triangle?(a,b,c)
[a,b,c].max < [a,b,c].sum/2.0
end
或者Rails以外的Ruby:
def is_triangle?(a,b,c)
[a,b,c].max < [a,b,c].inject(:+)/2.0
end
答案 2 :(得分:2)
你的问题是,除非所有3个数字都是0,否则你的if
之一将永远为真。你想要的更像是什么
def is_triangle(a,b,c)
a + b > c && a + c > b && b + c > a
end
is_triangle(3,6,8) #=> true
is_triangle(3,6,80) #=> false
答案 3 :(得分:1)
你传入的任何内容都不会返回false。你的方法错了。
您可以通过找到最长边然后添加剩余的两边来判断三边是否形成三角形。如果它们大于最长边,那么双方可以制作一个traingle。
答案 4 :(得分:0)
我建议如果您确定您的逻辑是正确的,请将方法更改为
def is_triangle?(a, b, c)
a+b > c or b+c > a or c+a > b
end
但根据我的说法并不是这样的方法
def is_triangle?(a, b, c)
a+b>c and b+c>a and c+a>b
end
有关红宝石惯例的一些注意事项:
答案 5 :(得分:0)
puts " enter a, b and c values"
a=gets.to_i
b=gets.to_i
c=gets.to_i
if a+b > c
print true
elsif a+c>b
print true
elsif b+c>a
print true
else
print false
end
you can also use this code too.. this is much easy
答案 6 :(得分:0)
这也是这个问题的解决方案:
if 2*[a,b,c].max < a + b + c
true
else
false
end
理论上可能存在各种不同的不等式: