Calculating the EAN Check Digit in Erlang

EAN and UPC codes come with a Check Digit in the end. A tool for EAN Check Digit calculation (called EANcalc) was the first program I ever sold. It was written in GW-Basic and I sold it for 30 DM (15 U$). I was 12 or so.

Since then I have implemented EAN Check digits in many Languages. Now in Erlang:

% @doc calculate a EAN check digit
ean_digit(Nums) ->
    {_, Summe} = 
    lists:foldr(fun(X, {Factor, Summe}) -> 
                    {4-Factor, Summe + ((X-$0) * Factor)}
                end, {3, 0}, Nums),
    [$0 + ((10-(Summe rem 10)) rem 10)].

make_ean(Num) ->
    Prefix = "4005998",
    EanRaw = Prefix ++ Num),
    EanRaw ++ ean_digit(EanRaw).

[$2] = ean_digit("400599871650")
"4005998716502" = make_ean("71650")

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s