def adjacent_sum(arr)
narr = []
l = arr.length
arr.each.with_index do |num,index|
if index < arr.size-1
narr << arr[index] arr[index 1]
end
end
return narr
end
print adjacent_sum([3, 7, 2, 11]) #=> [10, 9, 13], because [ 3 7, 7 2, 2 11 ]
puts
print adjacent_sum([2, 5, 1, 9, 2, 4]) #=> [7, 6, 10, 11, 6], because [2 5, 5 1, 1 9, 9 2, 2 4]
puts
撰寫一個方法
pyramid_sum,該方法接收代表金字塔底部的數字陣列。該函式應回傳一個二維陣列,表示具有給定底數的完整金字塔。為了構造金字塔的一個級別,我們取下面級別的相鄰元素的總和。
我知道我必須制作一個二維陣列并使用相鄰加法來構建金字塔的下一層,但我不了解 Ruby 中二維陣列的基本機制或思維方法。為什么我得到陣列,你建議什么方法?
uj5u.com熱心網友回復:
base = [1, 2, 3, 4, 5]
(base.size-1).times.with_object([base]) do |_,arr|
arr << arr.last.each_cons(2).map(&:sum)
end.reverse
#=> [
# [48]
# [20, 28],
# [8, 12, 16],
# [3, 5, 7, 9],
# [1, 2, 3, 4, 5],
# ]
參見Enumerable#each_cons,一個可愛的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/394456.html
上一篇:Ruby中的變數匯出
