summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/text/markov/TextGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc/rgens/text/markov/TextGenerator.java')
-rw-r--r--src/main/java/bjc/rgens/text/markov/TextGenerator.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/main/java/bjc/rgens/text/markov/TextGenerator.java b/src/main/java/bjc/rgens/text/markov/TextGenerator.java
new file mode 100644
index 0000000..f629d49
--- /dev/null
+++ b/src/main/java/bjc/rgens/text/markov/TextGenerator.java
@@ -0,0 +1,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);
+ }
+ }
+}