%%% -*- mode: erlang -*- %%% $Id: ary3.erlang,v 1.3 2001/06/18 18:39:33 doug Exp $ %%% http://www.bagley.org/~doug/shootout/ %%% from James Hague -module(ary3). -export([main/1]). main() -> main(['1']). main([Arg]) -> Num = list_to_integer(atom_to_list(Arg)), ets:new(y, [set, private, named_table]), clear_y_array(Num), X = list_to_tuple(lists:seq(1, Num)), repeat(X, Num, 1000), [{_,First}] = ets:lookup(y, 1), [{_,Last}] = ets:lookup(y, Num), io:fwrite("~w ~w~n", [First, Last]), ets:delete(y), halt(0). clear_y_array(0) -> ok; clear_y_array(I) -> ets:insert(y, {I,0}), clear_y_array(I - 1). repeat(X, N, 0) -> ok; repeat(X, N, K) -> calc(X, N), repeat(X, N, K - 1). calc(X, 0) -> ok; calc(X, N) -> ets:update_counter(y, N, element(N, X)), calc(X, N - 1).