Sha256: 1d418cad19b5b3afb19102597e9d21b6f73f96b00de8e0e800a8306d93ab3dd3

Contents?: true

Size: 502 Bytes

Versions: 151

Compression:

Stored size: 502 Bytes

Contents

open Core

let every_second_digit_doubled =
  let double_digit n = let d = n * 2 in if d >= 10 then d - 9 else d in
  List.rev_mapi ~f:(fun i -> if i % 2 = 1 then double_digit else Fn.id)

let valid s =
  let s = String.filter s ~f:(fun ch -> ch <> ' ') in
  if String.length s > 1
  then
    let checksum = String.to_list s
    |> List.rev_map ~f:(fun ch -> Char.to_int ch - Char.to_int '0')
    |> every_second_digit_doubled
    |> List.sum (module Int) ~f:Fn.id in
    checksum % 10 = 0
  else false

Version data entries

151 entries across 151 versions & 1 rubygems

Version Path
trackler-2.2.1.50 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.49 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.48 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.47 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.46 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.45 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.44 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.43 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.42 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.41 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.40 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.39 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.38 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.37 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.36 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.35 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.34 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.33 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.32 tracks/ocaml/exercises/luhn/example.ml
trackler-2.2.1.31 tracks/ocaml/exercises/luhn/example.ml