Sha256: e031f6086de12c4931a6cd5f9cc5fb7611f686a04ffad5772b2b9b14999ffbf4

Contents?: true

Size: 727 Bytes

Versions: 332

Compression:

Stored size: 727 Bytes

Contents

module Luhn

let private digit c = (int)c - (int)'0'
let private digits number = number.ToString() |> Seq.map digit

let private addend index digit = 
    if (index % 2 = 0) then digit else 
    if (digit >= 5) then digit * 2 - 9 
    else digit * 2

let private addends number = 
    number
    |> List.ofSeq 
    |> List.rev 
    |> List.mapi addend 
    |> List.rev

let private checksum number = (number |> digits |> addends |> List.sum) % 10

let valid (number : string) =
    let noSpaces = number.Replace(" ", "")
    match Seq.length noSpaces with
    | 0 | 1 -> false
    | _ ->
        match Seq.forall (fun c -> c >= '0' && c <= '9') noSpaces with
        | false -> false
        | true  -> checksum noSpaces = 0

Version data entries

332 entries across 332 versions & 1 rubygems

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