Skip to content

Instantly share code, notes, and snippets.

@fjpse
Created May 15, 2020 16:29
Show Gist options
  • Save fjpse/4565954ab9067072d779369b1aa43f2b to your computer and use it in GitHub Desktop.
Save fjpse/4565954ab9067072d779369b1aa43f2b to your computer and use it in GitHub Desktop.
-module(lst).
-export([
take/2,
reverse/1,
palindrome/1,
remove/2,
nub/1
]).
%%
%% take(N, L) -> return the N first elements of the list L
%%
take(0, _L) -> [];
take(_N, []) -> [];
take(N, [X|Xs]) when N > 0 ->
[X | take(N-1, Xs)].
%%
%% reverse
%%
reverse([]) -> [];
reverse([X|Xs]) -> reverse(Xs) ++ [X].
%%
%% palindrome
%%
palindrome(X) -> X =:= reverse(X).
%%
%% remove(I,L) -> remove all occurrencies of X in L.
%%
remove(_X, []) -> [];
remove(X, [X|Xs]) -> remove(X,Xs);
remove(X, [Y|Xs]) -> [Y | remove(X,Xs)].
%%
%% nub(L)
%%
nub([]) -> [];
nub([X|Xs]) -> [X|nub(remove(X,Xs))].
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment