summaryrefslogtreecommitdiff
path: root/ds
diff options
context:
space:
mode:
Diffstat (limited to 'ds')
-rw-r--r--ds/comparer.go3
-rw-r--r--ds/integer.go43
2 files changed, 38 insertions, 8 deletions
diff --git a/ds/comparer.go b/ds/comparer.go
index 737ad1b..168ec19 100644
--- a/ds/comparer.go
+++ b/ds/comparer.go
@@ -4,6 +4,5 @@ type Comparer interface {
LowerThan(a Comparer) bool
HigherThan(a Comparer) bool
Equals(a Comparer) bool
+ IntVal() int
}
-
-type CompareList []Comparer
diff --git a/ds/integer.go b/ds/integer.go
index 69ee0aa..b8026da 100644
--- a/ds/integer.go
+++ b/ds/integer.go
@@ -1,25 +1,56 @@
package ds
-import "math/rand"
+import (
+ "fmt"
+ "math/rand"
+)
-type Integer int
+type Integer struct {
+ val int
+}
func RandomIntegers(length, max int) []Comparer {
a := make([]Comparer, length)
for i := 0; i < length; i++ {
- a[i] = Integer(rand.Intn(max))
+ a[i] = Integer{rand.Intn(max)}
}
return a
}
+func SortedIntegers(length int) []Comparer {
+ a := make([]Comparer, length)
+ for i := 0; i < length; i++ {
+ a[i] = Integer{i}
+ }
+ return a
+}
+
+func ReverseSortedIntegers(length int) []Comparer {
+ a := make([]Comparer, length)
+ j := length
+ for i := 0; i < length; i++ {
+ a[i] = Integer{j}
+ j--
+ }
+ return a
+}
+
+func (i Integer) String() string {
+ return fmt.Sprintf("%d", i.val)
+}
+
+func (i Integer) IntVal() int {
+ return i.val
+}
+
func (i Integer) LowerThan(j Comparer) bool {
- return i < j.(Integer)
+ return i.val < j.IntVal()
}
func (i Integer) HigherThan(j Comparer) bool {
- return i > j.(Integer)
+ return i.val > j.IntVal()
}
func (i Integer) Equals(j Comparer) bool {
- return i == j.(Integer)
+ return i.val == j.IntVal()
}