Sha256: 83887aaa6ba006d58fc34c0faf8a039ac75dff024af2d356d2522af14972a36c

Contents?: true

Size: 1020 Bytes

Versions: 136

Compression:

Stored size: 1020 Bytes

Contents

-module(example).
-export([valid/1, test_version/0]).



checksum(Number) ->
  checksum(
    lists:reverse(
      filter_input(Number)
     ),
    odd,
    0
   ).



is_numeric(Number) ->
  lists:all(
  	fun(C) ->
  		(($0 =< C) andalso (C =< $9)) or (C == $\s)
  	end,
  	Number
  ).



filter_input(Number) ->
  lists:filter(
    fun(C) ->
      ($0 =< C) andalso (C =< $9)
    end,
    Number
  ).



checksum([], _, Total) ->
  Total;

checksum([H | ReversedNumber], odd, Total) ->
  checksum(ReversedNumber, even, Total + H - $0);

checksum([H | ReversedNumber], even, Total) when H < $5 ->
  checksum(ReversedNumber, odd, Total + (H - $0) * 2);

checksum([H | ReversedNumber], even, Total) when H >= $5 ->
  checksum(ReversedNumber, odd, Total + ((H - $0) * 2) - 9).



valid(Number) ->
  case is_numeric(Number) of
    true ->
      case filter_input(Number) of
        Number2 = [_,_|_] ->
          checksum(Number2) rem 10 == 0;
        _ -> false
      end;
    _ -> false
  end.



test_version() ->
    2.

Version data entries

136 entries across 136 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.179 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.178 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.177 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.176 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.175 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.174 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.173 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.172 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.171 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.170 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.169 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.167 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.166 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.165 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.164 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.163 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.162 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.161 tracks/erlang/exercises/luhn/src/example.erl
trackler-2.2.1.160 tracks/erlang/exercises/luhn/src/example.erl