From f351a7d6c831b6e8429e91e17ed41da27b7e6152 Mon Sep 17 00:00:00 2001 From: stephen mcquay Date: Sat, 5 May 2018 09:43:01 -0700 Subject: [PATCH] allows user to specify max for rand --- main.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index 6a7791e..f2f46de 100644 --- a/main.go +++ b/main.go @@ -2,7 +2,9 @@ package main import ( "container/heap" + "flag" "fmt" + "math" "math/rand" "os" "sort" @@ -12,8 +14,12 @@ import ( const usage = "smerge [count, count, ... count]" +var max = flag.Int("max", 1000, "maximum random number for each source") + func main() { - args := os.Args[1:] + flag.Parse() + + args := flag.Args() if len(args) < 1 { fmt.Fprintf(os.Stderr, "usage: %v\n", usage) os.Exit(1) @@ -26,20 +32,21 @@ func main() { os.Exit(1) } - srcs = append(srcs, source(i)) + srcs = append(srcs, source(i, *max)) } + f := fmt.Sprintf("%%%dd\n", int(math.Log10(float64(*max)))) for i := range merge(srcs...) { - fmt.Printf("%20d\n", i) + fmt.Printf(f, i) } } -func source(c int) <-chan int { +func source(c, max int) <-chan int { out := make(chan int) go func() { vals := make([]int, c) src := rand.New(rand.NewSource(time.Now().UnixNano())) for i := 0; i < c; i++ { - vals[i] = src.Int() + vals[i] = src.Intn(max) } sort.Ints(vals)