blob: f629d49274dda6da08b9c40e07a0e433c56ee98d (
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
|
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);
}
}
}
|