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

import java.io.*;

/**
 * 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("\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);

			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);
		}
	}
}