Erlang Passing Cars
-module(passing_cars).
-export([passing_cars/1]).
passing_cars(A) ->
{Result, _Multiply} = lists:foldl(fun(I, {Passing, Multiply}) ->
case I of
0 -> {Passing, Multiply + 1};
_ when Multiply > 0 -> {Passing + Multiply, Multiply};
_ -> {Passing, Multiply}
end
end, {0, 0}, A),
case Result > 1000000000 of
true -> -1;
false -> Result
end.
This counts eastbound cars as it scans, then adds them whenever a westbound car appears.