Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
28
Task/SEDOLs/OCaml/sedols.ocaml
Normal file
28
Task/SEDOLs/OCaml/sedols.ocaml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
let char2value c =
|
||||
assert (not (String.contains "AEIOU" c));
|
||||
match c with
|
||||
| '0'..'9' -> int_of_char c - int_of_char '0'
|
||||
| 'A'..'Z' -> int_of_char c - int_of_char 'A' + 10
|
||||
| _ -> assert false
|
||||
|
||||
let sedolweight = [1;3;1;7;3;9]
|
||||
|
||||
let explode s =
|
||||
s |> String.to_seq |> List.of_seq
|
||||
|
||||
let checksum sedol =
|
||||
let tmp = List.fold_left2 (fun sum ch weight -> sum + char2value ch * weight)
|
||||
0 (explode sedol) sedolweight in
|
||||
string_of_int ((10 - (tmp mod 10)) mod 10) ;;
|
||||
|
||||
List.iter (fun sedol -> print_endline (sedol ^ checksum sedol))
|
||||
[ "710889";
|
||||
"B0YBKJ";
|
||||
"406566";
|
||||
"B0YBLH";
|
||||
"228276";
|
||||
"B0YBKL";
|
||||
"557910";
|
||||
"B0YBKR";
|
||||
"585284";
|
||||
"B0YBKT" ]
|
||||
Loading…
Add table
Add a link
Reference in a new issue