nums = [2 5 3 7]
result = []
result.push {x:nums[0]}
for n in nums.slice(1)
result.push {n:n + result[-1].x}
log result
# [{x:2} {x:7} {x:10} {x:17}]
map
各要素は前の要素に依存するため、これを関数を使用して機能的に表現することは困難です。このアルゴリズムの正しい機能ソリューションは何ですか?
nums = [2 5 3 7]
result = []
result.push {x:nums[0]}
for n in nums.slice(1)
result.push {n:n + result[-1].x}
log result
# [{x:2} {x:7} {x:10} {x:17}]
map
各要素は前の要素に依存するため、これを関数を使用して機能的に表現することは困難です。このアルゴリズムの正しい機能ソリューションは何ですか?
JavaScript
合計の実行中のカウンターを保持し、毎回新しい数を追加します。
var nums = [2,5,3,7];
var createObject = function(nums){
var result = [],
total = 0;
for(var i = 0; i < nums.length; i++){
total += nums[i];
result.push({"x": total});
}
return result;
};
dandavis
コーヒースクリプトの答えは次のとおりです。
nums.map ((x)->{x: @[0] += x}), [0]
少し明確なバリエーション
nums.map ((x)->{x: @accum += x}), {accum:0}
内包表記の使用coffeescript
(および同じアキュムレータの考え方)
accum = 0; z = ({x: accum += i} for i in nums)
map (-> {x:it}) <| (fold ((acc, a) -> acc ++ [a + ((last acc) ? 0)]), []) <| [2, 5, 3, 7]