summaryrefslogtreecommitdiff
path: root/RGens/src/main/java/bjc/rgens/text/markov/TextGenerator.java
blob: 770acd93f00fad8f5194298da2756889adf8792d (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
package bjc.rgens.text.markov;

import java.io.*;

/**
 * Generate text from a markov model of an input text
 * 
 * @author ben
 *
 */
public class TextGenerator {
	/**
	 * @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("\n" + "Usage: 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 = StandaloneTextGenerator.generateMarkovMap(k,
					reader);

			System.out.println(markov.generateTextFromMarkov(M)
					.substring(0, Math.min(M, text.length())));
		} 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);
		}
	}
}