Ruby-If-Else语句(三角形测试)
问题是创建一个函数,该函数接受三个数字作为输入,并根据这三个数字是否可以形成三角形返回true或false。如果任意两条边的和大于第三条边,三个数字可以形成一个三角形 我的答案是:Ruby-If-Else语句(三角形测试),ruby,math,if-statement,geometry,Ruby,Math,If Statement,Geometry,问题是创建一个函数,该函数接受三个数字作为输入,并根据这三个数字是否可以形成三角形返回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 问题
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
问题是:我假设的虚假回报一直都是真实的。请帮忙 您传递给此的任何内容都不会返回false。你的方法是错误的
通过找到最长的边,然后将剩余的两条边相加,可以判断三条边是否构成三角形。如果它们大于最长的边,那么这些边就可以生成一个traingle。传递到其中的任何内容都不会返回false。你的方法是错误的
通过找到最长的边,然后将剩余的两条边相加,可以判断三条边是否构成三角形。如果它们大于最长的边,那么这些边可以形成一个三角形。我建议如果您确定您的逻辑正确,请将方法更改为
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
关于ruby约定,需要注意以下几点:
我建议如果你确信你的逻辑是正确的,就把方法改为
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
关于ruby约定,需要注意以下几点:
您的问题是,除非所有3个数字都是0,否则您的
if
s中的一个将始终为真。你想要的是更像
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个数字都是0,否则您的
if
s中的一个将始终为真。你想要的是更像
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
这个逻辑应该适用于找到三角形
def is_triangle?(a,b,c)
sorted = [a,b,c].sort
greatest_side = sorted.pop
greatest_side < sorted.sum
end
def是_三角形?(a、b、c)
排序=[a,b,c]。排序
最大侧=sorted.pop
最大边
这个逻辑应该适用于找到三角形
def is_triangle?(a,b,c)
sorted = [a,b,c].sort
greatest_side = sorted.pop
greatest_side < sorted.sum
end
def是_三角形?(a、b、c)
排序=[a,b,c]。排序
最大侧=sorted.pop
最大边
另一种方法:
def is_triangle?(a,b,c)
[a,b,c].max < [a,b,c].sum/2.0
end
def是_三角形?(a、b、c)
[a,b,c]。最大值<[a,b,c]。总和/2.0
结束
或者对于Rails之外的Ruby:
def is_triangle?(a,b,c)
[a,b,c].max < [a,b,c].inject(:+)/2.0
end
def是_三角形?(a、b、c)
[a,b,c].最大值<[a,b,c].注入(+)/2.0
结束
另一种方法:
def is_triangle?(a,b,c)
[a,b,c].max < [a,b,c].sum/2.0
end
def是_三角形?(a、b、c)
[a,b,c]。最大值<[a,b,c]。总和/2.0
结束
或者对于Rails之外的Ruby:
def is_triangle?(a,b,c)
[a,b,c].max < [a,b,c].inject(:+)/2.0
end
def是_三角形?(a、b、c)
[a,b,c].最大值<[a,b,c].注入(+)/2.0
结束
这也是此问题的解决方案:
if 2*[a,b,c].max < a + b + c
true
else
false
end
if 2*[a,b,c].max
理论上可能存在各种不同的不等式:
这也是此问题的解决方案:
if 2*[a,b,c].max < a + b + c
true
else
false
end
if 2*[a,b,c].max
理论上可能存在各种不同的不等式:
当你期望错误时,你传递的是什么值?我觉得你的逻辑不正确,如果我错了,请原谅,这已经是小学时代了。但条件不应该是
a+b>c和b+c>a和c+a>b
??你所做的转化为a+b>c或b+c>a或c+a>b
当你期望值为false时,你传递的值是什么?你的逻辑对我来说似乎不正确,如果我错了,请原谅,我早就上小学了。但条件不应该是a+b>c和b+c>a和c+a>b
??你正在做的事情转化为a+b>c或b+c>a或c+a>b
这是一个很好的方法+1应在最后一行对其进行排序。sum而不是排序。sum。这是一个很好的方法+1最后一行应该是sorted.sum
而不是sort.sum
。如果这是你想要的答案,你应该接受它(投票计数器下面的小勾号)。我真的不在乎你是否接受我的答案或其他人的答案,但如果你的问题已经得到回答,请接受一个。如果这是你想要的答案,你应该接受它(投票柜台下面的小记号)。我真的不在乎你是否接受我或其他人的答案,但如果你的问题已经得到了回答,请接受一个。