Sha256: 28de046ea55d41c95fe0461e295dd062e58f40b9c1c45014c9ca2e07526772fa

Contents?: true

Size: 470 Bytes

Versions: 66

Compression:

Stored size: 470 Bytes

Contents

open Core.Std

let digit character =
  (int_of_char character) - 48

let rec sum_digits s r c = function
  | 0 -> r
  | i ->
    let d = c * (digit s.[i - 1]) in
    sum_digits s (r + (d/10) + (d mod 10)) (3-c) (i-1)

let checksum s =
  (sum_digits s 0 1 (String.length s))

let valid s =
  (checksum s) mod 10 = 0

let add_check_digit s =
  let check = ((sum_digits s 0 2 (String.length s)) mod 10) in
  String.concat ~sep:"" [s; (string_of_int ((10 - check) mod 10))]

Version data entries

66 entries across 66 versions & 1 rubygems

Version Path
trackler-2.0.6.10 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.6.9 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.6.8 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.6.7 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.6.6 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.6.5 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.6.4 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.6.3 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.6.2 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.6.1 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.6.0 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.5.18 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.5.17 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.5.16 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.5.15 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.5.14 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.5.13 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.5.12 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.5.11 tracks/ocaml/exercises/luhn/example.ml
trackler-2.0.5.10 tracks/ocaml/exercises/luhn/example.ml