Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,17 @@
|
|||
let decimal_of_roman roman =
|
||||
let rec convert arabic lastval = function
|
||||
| head::tail ->
|
||||
let n = match head with
|
||||
| 'M' | 'm' -> 1000
|
||||
| 'D' | 'd' -> 500
|
||||
| 'C' | 'c' -> 100
|
||||
| 'L' | 'l' -> 50
|
||||
| 'X' | 'x' -> 10
|
||||
| 'V' | 'v' -> 5
|
||||
| 'I' | 'i' -> 1
|
||||
| _ -> 0
|
||||
let op = if n > lastval then (-) else (+)
|
||||
convert (op arabic lastval) n tail
|
||||
| _ -> arabic + lastval
|
||||
convert 0 0 (Seq.toList roman)
|
||||
;;
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
let decimal_of_roman roman =
|
||||
let convert (arabic,lastval) c =
|
||||
let n = match c with
|
||||
| 'M' | 'm' -> 1000
|
||||
| 'D' | 'd' -> 500
|
||||
| 'C' | 'c' -> 100
|
||||
| 'L' | 'l' -> 50
|
||||
| 'X' | 'x' -> 10
|
||||
| 'V' | 'v' -> 5
|
||||
| 'I' | 'i' -> 1
|
||||
| _ -> 0
|
||||
let op = if n > lastval then (-) else (+)
|
||||
(op arabic lastval, n)
|
||||
let (arabic, lastval) = Seq.fold convert (0,0) roman
|
||||
arabic + lastval
|
||||
;;
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
let tests = ["MCMXC"; "MMVIII"; "MDCLXVII"; "MMMCLIX"; "MCMLXXVII"; "MMX"]
|
||||
for test in tests do Printf.printf "%s: %d\n" test (decimal_of_roman test)
|
||||
;;
|
||||
Loading…
Add table
Add a link
Reference in a new issue