Sha256: 7baf495af0718c2f23da45b02d5c5e1dc51a49638562d85405c9e225c05febf4

Contents?: true

Size: 705 Bytes

Versions: 64

Compression:

Stored size: 705 Bytes

Contents

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

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

let checkDigit (number:int64) = number % 10L

let addends (number:int64) = 
    number 
    |> digits 
    |> List.ofSeq 
    |> List.rev 
    |> List.mapi addend 
    |> List.rev

let checksum (number:int64) = (number |> addends |> List.sum) % 10

let valid (number:int64) = checksum number = 0

let create (target:int64) = 
    let targetNumber = target * 10L

    if valid targetNumber then targetNumber
    else targetNumber + 10L - (int64)(checksum targetNumber)

Version data entries

64 entries across 64 versions & 1 rubygems

Version Path
trackler-2.0.6.8 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.6.7 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.6.6 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.6.5 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.6.4 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.6.3 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.6.2 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.6.1 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.6.0 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.5.18 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.5.17 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.5.16 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.5.15 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.5.14 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.5.13 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.5.12 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.5.11 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.5.10 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.5.9 tracks/fsharp/exercises/luhn/Example.fs
trackler-2.0.5.8 tracks/fsharp/exercises/luhn/Example.fs