summaryrefslogtreecommitdiff
path: root/internal/num/roman.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/num/roman.go')
-rw-r--r--internal/num/roman.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/internal/num/roman.go b/internal/num/roman.go
new file mode 100644
index 0000000..16bfe16
--- /dev/null
+++ b/internal/num/roman.go
@@ -0,0 +1,18 @@
+package num
+
+var (
+ m0 = []string{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}
+ m1 = []string{"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}
+ m2 = []string{"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}
+ m3 = []string{"", "M", "MM", "MMM"}
+)
+
+// Roman numeral in interval 0 < x < 4000
+type Roman int
+
+func (n Roman) String() string {
+ if n <= 0 || n >= 4000 {
+ return ""
+ }
+ return m3[n/1000] + m2[n%1000/100] + m1[n%100/10] + m0[n%10]
+}