Advertisement
Guest User

Untitled

a guest
Jun 7th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 0.73 KB | None | 0 0
  1. % palindrome (strict palindrome)
  2. palindrome(X) ->
  3.     palindrome(X, lists:reverse(X), length(X) div 2).
  4.  
  5. palindrome([X|X1s], [X|X2s], Remaining) ->
  6.     if Remaining == 0 ->
  7.         true;
  8.     true ->
  9.         palindrome(X1s, X2s, Remaining-1)
  10.     end;
  11. palindrome([_X|_X1s], [_Y|_X2s], _Remaining) ->
  12.     false.
  13.  
  14. % palindrome (relaxed palindrome, only considers letters)
  15. relaxed_palindrome(X) ->
  16.     CleanedX = only_letters(X),
  17.     palindrome(CleanedX).
  18.  
  19. only_letters(X) ->
  20.     only_letters(X, []).
  21.  
  22. only_letters([], Acc) -> Acc;
  23. only_letters([X|Xs], Acc) ->
  24.     case re:run([X], "^[A-Za-z]$") of
  25.         {match, _} -> only_letters(Xs, Acc ++ string:lowercase([X]));
  26.         nomatch    -> only_letters(Xs, Acc)
  27.     end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement