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