arnaucube
arnaucube/goMarkovPublic Self-hosted repository
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}