From 7ae2818a43ef5c38390ef2e58de9e1acbe678abf Mon Sep 17 00:00:00 2001 From: Ryota Kayanuma Date: Sat, 9 Feb 2019 14:12:47 +0900 Subject: [PATCH] Add GenerateAll function --- gomarkov.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gomarkov.go b/gomarkov.go index fe8400c..5bed405 100644 --- a/gomarkov.go +++ b/gomarkov.go @@ -132,6 +132,29 @@ func (chain *Chain) Generate(current NGram) (string, error) { return "", nil } +//GenerateAll generates whole chain of text from scratch. +func (chain *Chain) GenerateAll() ([]string, error) { + generatedText := []string{} + current := make(NGram, 0) + for i := 0; i < chain.Order; i++ { + current = append(current, StartToken) + } + + for { + next, err := chain.Generate(current) + if err != nil { + return []string{}, err + } + if next == EndToken { + break + } + + current = append(current, next)[1:] + generatedText = append(generatedText, next) + } + return generatedText, nil +} + func init() { rand.Seed(time.Now().UnixNano()) }