def adjacent_sum(arr)
narr = []
arr.each.with_index do |num, index|
narr << (arr[index] + arr[index+1])
end
return narr
end
print adjacent_sum([3, 7, 2, 11])
#=> [10, 9, 13], because [ 3+7, 7+2, 2+11 ]
adjacent_sum([2, 5, 1, 9, 2, 4])
#=> [7, 6, 10, 11, 6], because [2+5, 5+1, 1+9, 9+2, 2+4]
Run Code Online (Sandbox Code Playgroud)
我正在尝试根据用户的输入修改 narr 。基本上尝试将所有相邻的数字相加并返回一个新数组。
编写一个相邻的方法,该方法接受一个数字数组并返回一个新数组,其中包含原始数组中相邻数字的总和。请参阅示例。
我对 Ruby 及其思维方式很陌生。我不知道该问题使用哪种迭代方法,但我知道有很多迭代方法。我可以走旧路线,只做一个 while 循环,但我想了解 .each 循环的机制。
这是错误消息:
/tmp/file.rb:5:in `+': nil can't be coerced into Integer (TypeError)
from /tmp/file.rb:5:in `block in adjacent_sum'
from /tmp/file.rb:3:in `each' …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个新数组,其中原始数组的元素被替换为哈希中相应的值。我想将 arr 中的每个元素与 hash 中的键进行比较,如果它们相等,则将它们铲入 arr 中并在最后返回它。为什么我的代码不起作用以及如何访问/返回哈希中相应条目的键值,而不仅仅是键指向的值?如果你明白我说的话。
def element_replace(arr, hash)
count = []
for i in arr do
if i == hash.key
count << value
else
count << i
end
end
return count
end
arr1 = ["LeBron James", "Lionel Messi", "Serena Williams"]
hash1 = {"Serena Williams"=>"tennis", "LeBron James"=>"basketball"}
print element_replace(arr1, hash1) # => ["basketball", "Lionel Messi", "tennis"]
puts
arr2 = ["dog", "cat", "mouse"]
hash2 = {"dog"=>"bork", "cat"=>"meow", "duck"=>"quack"}
print element_replace(arr2, hash2) # => ["bork", "meow", "mouse"]
puts
Run Code Online (Sandbox Code Playgroud)