goMarkov/main.go
main.goRaw
1package main
2
3import (
4 "bufio"
5 "fmt"
6 "io/ioutil"
7 "os"
8 "strconv"
9 "strings"
10)
11
12func readTxt(path string) (string, error) {
13 data, err := ioutil.ReadFile(path)
14 if err != nil {
15 //Do something
16 }
17 dataClean := strings.Replace(string(data), "\n", " ", -1)
18 content := string(dataClean)
19 return content, err
20}
21
22func main() {
23 fmt.Print("entry the first word: ")
24 newcommand := bufio.NewReader(os.Stdin)
25 firstWord, _ := newcommand.ReadString('\n')
26 firstWord = strings.TrimSpace(firstWord)
27 fmt.Print("first word: ")
28 fmt.Println(firstWord)
29
30 fmt.Println("how many words you want on the text?")
31 newcommand = bufio.NewReader(os.Stdin)
32 answer, _ := newcommand.ReadString('\n')
33 answer = strings.TrimSpace(answer)
34 fmt.Print("Number of words on text to generate: ")
35 fmt.Println(answer)
36 count, err := strconv.Atoi(answer)
37 if err != nil {
38 fmt.Println("incorrect entry, need a positive number")
39 }
40
41 text, _ := readTxt("text.txt")
42
43 fmt.Println("generating markov chains")
44 states := markov.train(text)
45 fmt.Println("generating text")
46 generatedText := markov.generateText(states, firstWord, count)
47 fmt.Println("")
48 fmt.Println(generatedText)
49}