RosettaCodeData/Task/Mayan-numerals/F-Sharp/mayan-numerals.fs
2023-07-01 13:44:08 -04:00

10 lines
730 B
FSharp

// Mayan numerals. Nigel Galloway: February 19th., 2021
let N=[|"";"│. ";"│.. ";"│... ";"│....";"│~~~~"|]
let fN g=(fun(n)->if g=0 && n=0 then "│ Θ " else N.[let g=g-5*n in if g>4 then 5 else if g<0 then 0 else g])
let rec fG n g=match n/20L,n%20L with (0L,0L)->(g,List.length g) |(i,n)->fG i ((fN(int n))::g)
let mayan n=let n,g=fG n []
printf "┌────"; for _ in 2..g do printf "┬────"
printfn ""; for g in 3.. -1 ..0 do n|>List.iter(fun n->printf "%s" (n(g))); printfn ""
printf "└────"; for _ in 2..g do printf "┴────"
printfn ""
[4005L;8017L;326205L;886205L]|>List.iter(fun n->printfn "%d" n; mayan n)