summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/text/markov/TextGenerator.java
blob: 22af52e8c531dd4d44ba3d9a30fd4286793a044a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package bjc.rgens.text.markov;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 * Generate text from a markov model of an input text
 *
 * @author ben
 *
 */
public class TextGenerator {
	/**
	 * Main method.
	 *
	 * @param args
	 * 	When used with three arguments, the first represents the k-order
	 * 	of the Markov objects. The second represents the number of
	 * 	characters to print out. The third represents the file to be
	 * 	read. 
	 *
	 * 	When used with two arguments, the first represents the k-order
	 * 	of the Markov objects, and the second represents the file to be
	 * 	read. The generated text will be the same number of characters
	 * 	as the original file.
	 */
	public static void main(String[] args) {
		int k = 0;
		int M = 0;

		String file = "";
		StringBuilder text = new StringBuilder();

		if (args.length == 3) {
			k = Integer.parseInt(args[0]);
			M = Integer.parseInt(args[1]);

			file = args[2];
		} else if (args.length == 2) {
			k = Integer.parseInt(args[0]);

			file = args[1];
		} else {
			System.out.println("\nUsage: java TextGenerator k M file");
			System.out.println("where k is the markov order, M is the number");
			System.out.println("of characters to be printed, and file is the");
			System.out.println("name of the file to print from. M may be left out.\n");
			System.exit(1);
		}

		StandaloneMarkov markov = null;

		try (FileReader reader = new FileReader(file)) {
			markov = StandaloneMarkov.generateMarkovMap(k, reader);

			String generatedText = markov.generateTextFromMarkov(M);
			String desiredText = generatedText.substring(0, Math.min(M, text.length()));

			System.out.println(desiredText);
		} catch (FileNotFoundException e) {
			System.out.println("File not found.");

			e.printStackTrace();

			System.exit(1);
		} catch (IOException ioex) {
			System.out.println("IOException");

			ioex.printStackTrace();

			System.exit(1);
		}
	}
}