diff options
Diffstat (limited to 'RGens/src/main/java/bjc/rgens/text/markov/StandaloneMarkov.java')
| -rw-r--r-- | RGens/src/main/java/bjc/rgens/text/markov/StandaloneMarkov.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/RGens/src/main/java/bjc/rgens/text/markov/StandaloneMarkov.java b/RGens/src/main/java/bjc/rgens/text/markov/StandaloneMarkov.java new file mode 100644 index 0000000..0edaaa8 --- /dev/null +++ b/RGens/src/main/java/bjc/rgens/text/markov/StandaloneMarkov.java @@ -0,0 +1,42 @@ +package bjc.rgens.text.markov; + +import java.util.Map; + +public class StandaloneMarkov { + private int k; + + private Map<String, Markov> markovHash; + private String firstSub; + + public StandaloneMarkov(int k, Map<String, Markov> markovHash, + String firstSub) { + this.k = k; + this.markovHash = markovHash; + this.firstSub = firstSub; + } + + public String generateTextFromMarkov(int M) { + StringBuilder text = new StringBuilder(); + for (int i = k; i < M; i++) { + if (i == k) { + text.append(firstSub); + + if (text.length() > k) + i = text.length(); + } + + String sub = text.substring((i - k), (i)); + Markov tmp = markovHash.get(sub); + + if (tmp != null) { + Character nextChar = tmp.random(); + text.append(nextChar); + } else { + i = k - 1; + } + } + + return text.toString(); + } + +} |
