我需要找到每个嵌套元素的第2个和第3个元素之间的距离,所以
nested_array = [[0, 3, 4], [1, 20, 21], [2, 2, 2]]
def pythag_theorem(a, b)
c = (a * a) + (b * b)
result = Math.sqrt(c)
result
end
def find_distance(array)
t = 0
while t < array.length
array[t].map! {|x| pythag_theorem(x[1], x[2])}
t += 1
end
array
end
print find_distance(nested_array)
我正在
[[0.0, 1.4142135623730951, 0.0], [1.0, 0.0, 1.0], [1.0, 1.0, 1.0]]
当我需要时
[[0, 5], [1, 29], [2, 2.82842712474619]]
pythag_theorem有效,但为什么不是地图!为我工作?感谢。
答案 0 :(得分:3)
a = [[0, 3, 4], [1, 20, 21], [2, 2, 2]]
a.map {|x,y,z| [x, Math.sqrt(y*y + z*z)]}
# => [[0, 5.0], [1, 29.0], [2, 2.82842712474619]]
答案 1 :(得分:0)
Map会为您完成循环。您不需要while
循环。您也可能不应该使用map!
修改数组。
array = [[0, 3, 4], [1, 20, 21], [2, 2, 2]]
array.map { |(_, a, b)| Math.sqrt(a * a + b * b) }
# => [5.0, 29.0, 2.8284271247461903]
答案 2 :(得分:0)
这应该适合你:
def find_distance(array)
array.map do |tuple|
[tuple[0],pythag_theorem(tuple[1],tuple[2])]
end
end
顺便说一下,修改一个函数参数不是一个好主意。