Skip to content

Commit

Permalink
Add depth flags (#2)
Browse files Browse the repository at this point in the history
* Add DepthOptions to Iroha

* Add depth flags
  • Loading branch information
mpppk committed Jul 16, 2019
1 parent d8936d8 commit ffa5d4d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 8 deletions.
19 changes: 18 additions & 1 deletion cmd/gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ import (

var fileFlagKey = "file"
var colNameKey = "col"
var minDepthKey = "min-depth"
var minLogDepthKey = "min--log-depth"
var maxDepthKey = "max-depth"

var genCmd = &cobra.Command{
Use: "gen",
Expand Down Expand Up @@ -42,7 +45,7 @@ var genCmd = &cobra.Command{
words = append(words, record[colIndex])
}

iroha := lib.NewIroha(words)
iroha := lib.NewIroha(words, &lib.DepthOptions{})
iroha.PrintWordCountMap()
iroha.PrintWordByKatakanaMap()
rowIndicesList, err := iroha.Search()
Expand Down Expand Up @@ -112,4 +115,18 @@ func init() {
if err := viper.BindPFlag(colNameKey, genCmd.Flags().Lookup(colNameKey)); err != nil {
panic(err)
}
if err := registerIntToFlags(genCmd, minDepthKey, -1, "min depth"); err != nil {
panic(err)
}
if err := registerIntToFlags(genCmd, maxDepthKey, -1, "max depth"); err != nil {
panic(err)
}
if err := registerIntToFlags(genCmd, minLogDepthKey, 0, "min log depth"); err != nil {
panic(err)
}
}

func registerIntToFlags(cmd *cobra.Command, name string, value int, usage string) error {
cmd.Flags().Int(name, value, usage)
return viper.BindPFlag(name, cmd.Flags().Lookup(name))
}
18 changes: 11 additions & 7 deletions lib/iroha.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,25 @@ import (
"golang.org/x/sync/errgroup"
)

var logDepthThreshold = 1
var minParallelDepth = 1
var maxParallelDepth = 2

type Iroha struct {
katakanaBitsMap KatakanaBitsMap
katakana *Katakana
log *Log
depths *DepthOptions
}

type DepthOptions struct {
MaxLog int
MinParallel int
MaxParallel int
}

func NewIroha(words []string) *Iroha {
func NewIroha(words []string, options *DepthOptions) *Iroha {
km, _ := newKatakanaBitsMap()
return &Iroha{
katakanaBitsMap: km,
katakana: NewKatakana(words),
depths: options,
}
}

Expand All @@ -35,7 +39,7 @@ func (i *Iroha) PrintWordByKatakanaMap() {

func (i *Iroha) Search() (rowIndicesList [][]int, err error) {
katakanaBitsAndWordsList := i.katakana.ListSortedKatakanaBitsAndWords()
i.log = NewLog(katakanaBitsAndWordsList, logDepthThreshold, minParallelDepth)
i.log = NewLog(katakanaBitsAndWordsList, i.depths.MaxLog, i.depths.MinParallel)
wordsList, _, err := i.searchByBits(katakanaBitsAndWordsList, WordBits(0))
if err != nil {
return nil, err
Expand Down Expand Up @@ -100,7 +104,7 @@ func (i *Iroha) searchByBits(katakanaBitsAndWords []*KatakanaBitsAndWords, remai
depth := int(KatakanaLen) - len(katakanaBitsAndWords)
var irohaWordLists [][]*Word

goroutineMode := depth >= minParallelDepth && depth <= maxParallelDepth
goroutineMode := depth >= i.depths.MinParallel && depth <= i.depths.MaxParallel

if goroutineMode {
eg := errgroup.Group{}
Expand Down

0 comments on commit ffa5d4d

Please sign in to comment.