Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
28
Task/SEDOLs/F-Sharp/sedols.fs
Normal file
28
Task/SEDOLs/F-Sharp/sedols.fs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
open System
|
||||
let Inputs = ["710889"; "B0YBKJ"; "406566"; "B0YBLH"; "228276"; "B0YBKL"
|
||||
"557910"; "B0YBKR"; "585284"; "B0YBKT"; "B00030"]
|
||||
|
||||
let Vowels = set ['A'; 'E'; 'I'; 'O'; 'U']
|
||||
let Weights = [1; 3; 1; 7; 3; 9; 1]
|
||||
|
||||
let inline isVowel c = Vowels.Contains (Char.ToUpper c)
|
||||
|
||||
let char2value c =
|
||||
if Char.IsDigit c then int c - 0x30
|
||||
else (['A'..'Z'] |> List.findIndex ((=) (Char.ToUpper c))) + 10
|
||||
|
||||
let sedolCheckDigit (input: string) =
|
||||
if input.Length <> 6 || input |> Seq.exists isVowel then
|
||||
failwithf "Input must be six characters long and not contain vowels: %s" input
|
||||
|
||||
let sum = Seq.map2 (fun ch weight -> (char2value ch) * weight) input Weights |> Seq.sum
|
||||
(10 - sum%10)%10
|
||||
|
||||
let addCheckDigit inputs =
|
||||
inputs |> List.map (fun s -> s + (sedolCheckDigit s).ToString())
|
||||
|
||||
let processDigits() =
|
||||
try
|
||||
addCheckDigit Inputs |> List.iter (printfn "%s")
|
||||
with
|
||||
ex -> printfn "ERROR: %s" ex.Message
|
||||
Loading…
Add table
Add a link
Reference in a new issue