ASCII Maya Numbers
Perl, 125 117 bytes
$-=<>;{$_=($-%20?(""," .
"," ..
","...
","....
")[$-%5]."----
"x($-/5&3):"< >
").$_;($-/=20)&&($_=$/.$_,redo)}print
Thanks to Dom Hastings for helping me save 8 bytes.
Mathematica 185 182 171 153
With 18 bytes saved thanks to Arcinde's suggestion to use anonymous functions,
c=Column;c[If[#>0,{q,r}=#~QuotientRemainder~5;c@{{""," ."," .."," ...","...."}[[r+1]],c@{{""},{d="----"},{d,d},{d,d,d}}[[q+1]]},"< >"]&/@#~IntegerDigits~20]&
Example
c[If[# > 0, {q, r} = #~QuotientRemainder~5; c@{{"", " .", " ..", " ...", "...."}[[r + 1]], c@{{""}, {d = "----"}, {d, d}, {d, d, d}}[[q + 1]]}, "< >"] & /@ #~IntegerDigits~20] &[31415]
Checking
The decimal number, 31415, expressed in base 20. Mathematica employs lower case for this.
BaseForm[31415, 20]
The decimal digits corresponding to the above base 20 number.
IntegerDigits[31415,20]
{3, 18, 10, 15}
Another example
IntegerDigits[2147483607, 20]
{1, 13, 11, 1, 15, 9, 0, 7}
c[If[# > 0, {q, r} = #~QuotientRemainder~5;c@{{"", " .", " ..", " ...","...."}[[r + 1]], c@{{""}, {d = "----"}, {d, d}, {d, d, d}}[[q + 1]]},"< >"] & /@ #~IntegerDigits~20] &[2147483607]
JavaScript ES6, 143 bytes
Loads of bytes added because need to console.log
, could save another 23 bytes without it.
n=>console.log((d=(x,s='',l=1,j=x/l|0)=>s+(j>19?d(x,s,l*20)+`
`:'')+((j=j%20)?(' '+`.`.repeat(j%5)).slice(-4)+`
----`.repeat(j/5):'< >'))(n))