10 lines
730 B
FSharp
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)
|