Sha256: d5038f9c59e993b19bed40c35e7a1c0b34d17f339d922cbca66cc8e0a12d635e

Contents?: true

Size: 515 Bytes

Versions: 111

Compression:

Stored size: 515 Bytes

Contents

module IsbnVerifier

open System.Text.RegularExpressions

let private digitToInt digit = if digit = 'X' then 10 else int digit - int '0'

let private checkSum isbn = 
    isbn
    |> Seq.mapi (fun i digit -> (10 - i) * digitToInt digit)
    |> Seq.sum

let private cleanup (isbn: string) = isbn.Replace("-", "")

let isValid (isbn: string) = 
    let cleanedUpIsbn = cleanup isbn

    match Regex.IsMatch(cleanedUpIsbn, "^[0-9]{9}[0-9X]$") with
    | false -> false
    | true  -> checkSum cleanedUpIsbn % 11 = 0

Version data entries

111 entries across 111 versions & 1 rubygems

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