as well as fixing the Canvas implementation so that it doesn't pop up an X window on init.cat-town
parent
209e074503
commit
5d5ada2dfc
@ -0,0 +1,34 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"github.com/meatballhat/box-o-sand/algs4/src/go/algs4"
|
||||
)
|
||||
|
||||
func die(err error) {
|
||||
fmt.Fprintf(os.Stderr, "ERROR: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func main() {
|
||||
if len(os.Args) < 2 {
|
||||
die(errors.New("We need an int!"))
|
||||
}
|
||||
|
||||
nValues, err := strconv.Atoi(os.Args[1])
|
||||
if err != nil {
|
||||
die(err)
|
||||
}
|
||||
|
||||
a := algs4.NewAccumulator()
|
||||
for t := 0; t < nValues; t++ {
|
||||
a.AddDataValue(algs4.Random())
|
||||
}
|
||||
|
||||
fmt.Println(a)
|
||||
return
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package algs4
|
||||
|
||||
import "fmt"
|
||||
|
||||
type Accumulator struct {
|
||||
total float64
|
||||
n int
|
||||
}
|
||||
|
||||
func NewAccumulator() *Accumulator {
|
||||
return &Accumulator{
|
||||
float64(0.0),
|
||||
0,
|
||||
}
|
||||
}
|
||||
|
||||
func (me *Accumulator) AddDataValue(val float64) {
|
||||
me.n++
|
||||
me.total += val
|
||||
}
|
||||
|
||||
func (me *Accumulator) Mean() float64 {
|
||||
return me.total / float64(me.n)
|
||||
}
|
||||
|
||||
func (me *Accumulator) String() string {
|
||||
return fmt.Sprintf("Mean (%d values): %7.5f", me.n, me.Mean())
|
||||
}
|
Loading…
Reference in new issue