Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
28
Task/Roman-numerals-Encode/F-Sharp/roman-numerals-encode.fs
Normal file
28
Task/Roman-numerals-Encode/F-Sharp/roman-numerals-encode.fs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
let digit x y z = function
|
||||
1 -> x
|
||||
| 2 -> x + x
|
||||
| 3 -> x + x + x
|
||||
| 4 -> x + y
|
||||
| 5 -> y
|
||||
| 6 -> y + x
|
||||
| 7 -> y + x + x
|
||||
| 8 -> y + x + x + x
|
||||
| 9 -> x + z
|
||||
| _ -> failwith "invalid call to digit"
|
||||
|
||||
let rec to_roman acc = function
|
||||
| x when x >= 1000 -> to_roman (acc + "M") (x - 1000)
|
||||
| x when x >= 100 -> to_roman (acc + digit "C" "D" "M" (x / 100)) (x % 100)
|
||||
| x when x >= 10 -> to_roman (acc + digit "X" "L" "C" (x / 10)) (x % 10)
|
||||
| x when x > 0 -> acc + digit "I" "V" "X" x
|
||||
| 0 -> acc
|
||||
| _ -> failwith "invalid call to_roman (negative input)"
|
||||
|
||||
let roman n = to_roman "" n
|
||||
|
||||
[<EntryPoint>]
|
||||
let main args =
|
||||
[1990; 2008; 1666]
|
||||
|> List.map (fun n -> roman n)
|
||||
|> List.iter (printfn "%s")
|
||||
0
|
||||
Loading…
Add table
Add a link
Reference in a new issue