summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2018-03-13 12:58:45 +0100
committerDimitri Sokolyuk <demon@dim13.org>2018-03-13 12:58:45 +0100
commitf486be13ec5bfe693b72f95ed4e5a9d0b90b7f7c (patch)
tree34f0c42f259459f629ab2f58df51238acd7156ef
parent1d3e4f0944ea1a116da9290ea913de71d54a9778 (diff)
...
-rw-r--r--roman.go10
-rw-r--r--roman_test.go6
2 files changed, 13 insertions, 3 deletions
diff --git a/roman.go b/roman.go
index 5759992..526f4ca 100644
--- a/roman.go
+++ b/roman.go
@@ -11,9 +11,13 @@ var (
// Roman numeral in interval 0 < x < 4000
type Roman int
+func (n Roman) IsValid() bool {
+ return n > 0 && n < 4000
+}
+
func (n Roman) String() string {
- if n <= 0 || n >= 4000 {
- return ""
+ if n.IsValid() {
+ return m3[n/1000] + m2[n%1000/100] + m1[n%100/10] + m0[n%10]
}
- return m3[n/1000] + m2[n%1000/100] + m1[n%100/10] + m0[n%10]
+ return ""
}
diff --git a/roman_test.go b/roman_test.go
index a61436e..ff4afe9 100644
--- a/roman_test.go
+++ b/roman_test.go
@@ -25,3 +25,9 @@ func TestRoman(t *testing.T) {
})
}
}
+
+func BenchmarkRoman(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ Roman(1666).String()
+ }
+}