Skip to content

Instantly share code, notes, and snippets.

@gorkaio
Created May 8, 2020 11:58
Show Gist options
  • Save gorkaio/6a2695b93b3150e10b9ec52b34a89109 to your computer and use it in GitHub Desktop.
Save gorkaio/6a2695b93b3150e10b9ec52b34a89109 to your computer and use it in GitHub Desktop.
-module(list_functions2).
-export([double/1,evens/1]).
-export([double_test/0,evens_test/0]).
%% double %%%
double([]) -> [];
double([_|_] = L) -> double(L, []).
double([], Ac) -> lists:reverse(Ac);
double([H|T], Ac) when is_integer(H) -> double(T, [2*H|Ac]).
double_test() ->
[] = double([]),
[2] = double([1]),
[6,8] = double([3,4]),
[-2,0,2,4,6] = double([-1,0,1,2,3]),
passed.
%% evens %%%
evens([]) -> [];
evens([_|_] = L) -> evens(L, []).
evens([], Ac) -> lists:reverse(Ac);
evens([H|T], Ac) when H rem 2 == 0 ->
evens(T, [H|Ac]);
evens([_|T], Ac) -> evens(T, Ac).
evens_test() ->
[] = evens([]),
[] = evens([1,3,5,7]),
[2] = evens([2]),
[2] = evens([1,2,3,5,7,9]),
[2,4,6,8] = evens([1,2,3,4,5,6,7,8,9]),
[-2,2] = evens([-2,-1,1,2]),
passed.
@elbrujohalcon
Copy link

Good job!
Maybe… for completeness sake, you could've added some floating-point values to your tests…

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment