diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-05-29 15:35:02 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-05-29 15:35:02 -0300 |
| commit | 0faa5175b6f0de8835ed514615ac64135f406b29 (patch) | |
| tree | 6a1a5a9b01a1175b8ae2203418005f7bc625be9d /src/main/java/bjc/rgens/text/markov/StandaloneMarkov.java | |
| parent | 9356498bebab9342222cd87be669abae9d7ac3a2 (diff) | |
Move files out of folder
Diffstat (limited to 'src/main/java/bjc/rgens/text/markov/StandaloneMarkov.java')
| -rw-r--r-- | src/main/java/bjc/rgens/text/markov/StandaloneMarkov.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/main/java/bjc/rgens/text/markov/StandaloneMarkov.java b/src/main/java/bjc/rgens/text/markov/StandaloneMarkov.java new file mode 100644 index 0000000..cebf2bc --- /dev/null +++ b/src/main/java/bjc/rgens/text/markov/StandaloneMarkov.java @@ -0,0 +1,70 @@ +package bjc.rgens.text.markov; + +import java.util.Map; + +/** + * A standalone Markov generator. + * + * @author bjculkin + */ +public class StandaloneMarkov { + /* The order of the generator. */ + private int ord; + + /* The generators to use. */ + private Map<String, Markov> hash; + /* The initial string. */ + private String first; + + /** + * Create a new standalone Markov generator. + * + * @param order + * The order of this generator. + * + * @param markovHash + * The generators to use. + * + * @param firstSub + * The string to start out with. + */ + public StandaloneMarkov(int order, Map<String, Markov> markovHash, String firstSub) { + ord = order; + hash = markovHash; + first = firstSub; + } + + /** + * Generate random text from the markov generator. + * + * @param charsToGenerate + * The number of characters of text to generate. + * + * @return + * The randomly generate text. + */ + public String generateTextFromMarkov(int charsToGenerate) { + StringBuilder text = new StringBuilder(); + + for (int i = ord; i < charsToGenerate; i++) { + if (i == ord) { + text.append(first); + + if (text.length() > ord) i = text.length(); + } + + String sub = text.substring(i - ord, i); + Markov tmp = hash.get(sub); + + if (tmp != null) { + Character nextChar = tmp.random(); + + text.append(nextChar); + } else { + i = ord - 1; + } + } + + return text.toString(); + } +} |
