// Generate a poem with the given number of strophes and lines per strophe. func generatePoem(strophes int, linesPerStrophe int) { // Find a catchy title title := strings.Trim(strings.Title(niall.Talk()), ".,;:!?_") if strings.Count(title, " ") > 4 { words := strings.Split(title, " ") title = strings.Join(words[:4], " ") } // Generate an appropriate amount of dashes dashes := "" for i := 0; i < len(title); i++ { dashes += "-" } // Output the header fmt.Printf("\n%s\n%s\n\n", title, dashes) // Generate and output all the srophes var line string for reps := 0; reps < strophes; reps++ { for i := 0; i < linesPerStrophe; i++ { // Try to get more than just a few words, up to 5 times for i2 := 0; i2 < 5; i2++ { line = niall.Talk() if strings.Count(line, " ") >= 3 { break } } fmt.Println(line) } fmt.Println() } }
func main() { niall.Init() input := readln("> ") END: for { switch input { case "quit", "exit": break END case "save": niall.SaveDictionary("niall.brain") case "load": niall.LoadDictionary("niall.brain") case "help": fmt.Println("Commands:") fmt.Println(" load - loads niall.brain") fmt.Println(" save - saves niall.brain") fmt.Println(" correct [from] [to] - corrects spelling") fmt.Println(" quit - exits") fmt.Println(" exit - exits") default: if strings.Index(input, "correct") == 0 { if strings.Count(input, " ") == 2 { fields := strings.Split(input, " ") from, to := fields[1], fields[2] niall.CorrectSpelling(from, to) fmt.Println("ok, corrected spelling") } else { fmt.Println("syntax for correcting spelling: correct [from] [to]") } } else { niall.Learn(input) fmt.Println(niall.Talk()) } } input = readln("> ") } niall.Quit() }