MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply TodayMimic the higher-order function `foldl` ( Wikipedia:Fold (higher-order function) ).

Arguments are a function with two arguments, start value, and a list. It takes the start value and the first item in the list and then applies the function to them, then feeds the function with this result and the second item in the list, and so on.

foldl(f, start, [x1, x2, ..., xn]) == f( (...f(f(f(s, x1), x2), x3), ...) , xn)

foldl(@plus, 0, 1:10) == ( ... (((0 + 1) + 2) + 3) + ... + 10) == 55

If the list is missing, it have to return the function handle which takes list. If both the start value and the list are missing, it have to return the function handle which takes two arguments, start value and list.

sumplusfive = foldl(@plus, 5); => sumplusfive(1:10) == 60

concat = foldl(@(x_, y_) [x_ y_]); => concat([1 2 3], [4 5 6]) == [1 2 3 4 5 6]

55 correct solutions
70 incorrect solutions

Last solution submitted on Jun 28, 2014

2 players like this problem