Sha256: fdb05481ee5b3768fc39083ca6de186a4336fd32fd20fc3fad6b0becfc8bcdbf

Contents?: true

Size: 506 Bytes

Versions: 111

Compression:

Stored size: 506 Bytes

Contents

open Core.Std

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

111 entries across 111 versions & 1 rubygems

Version Path
trackler-2.1.0.21 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.20 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.19 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.18 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.17 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.16 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.15 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.14 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.13 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.12 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.11 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.10 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.9 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.8 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.7 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.6 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.5 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.4 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.3 tracks/ocaml/exercises/luhn/example.ml
trackler-2.1.0.2 tracks/ocaml/exercises/luhn/example.ml