import java.io.File; import java.io.FileNotFoundException; import java.util.*; public class RandomWriter { public static void main(String[] args) throws FileNotFoundException { Random r = new Random(); String sentence = readToString("huckfinn.txt"); int k = r.nextInt(4) + 3; int length = 10; String seed = getSeed(sentence); String word = buildWord(seed, k, sentence); for (int i = 0; i < length; i++) { seed = getSeed(sentence); k = r.nextInt(4) + 3; word = buildWord(seed, k, sentence); System.out.print(word + " "); } System.out.println("."); } private static String buildWord(String seed, int k, String sentence) { String holder = seed; for (int i = 0; i < k; i++) { holder += nextBestLetter(holder, sentence); } return holder; } private static String nextBestLetter(String holder, String sentence) { String winner = ""; Map mapOfCandidates = new HashMap(); for (int i = 0; i < (sentence.length() - holder.length()); i++) { String checker = sentence.substring(i, i + holder.length()); if (checker.equals(holder) && !mapOfCandidates.containsKey(sentence.substring((i + holder.length()), (i + holder.length() + 1)))) { mapOfCandidates.put(sentence.substring(i + holder.length(), i + holder.length() + 1), 1); } else if (mapOfCandidates.containsKey(sentence.substring((i + holder.length()), (i + holder.length() + 1)))) { mapOfCandidates.put(sentence.substring(i + holder.length(), i + holder.length() + 1), mapOfCandidates.get(sentence.substring(i + holder.length(), i + holder.length() + 1)) + 1); } } int max = 0; for (String s : mapOfCandidates.keySet()) { if (mapOfCandidates.get(s) > max && !s.equals(" ")) { max = mapOfCandidates.get(s); winner = s; } } return winner; } private static String getSeed(String sentence) { Random r = new Random(); int index = r.nextInt(sentence.length()); String holder = sentence.substring(index, index + 1); while (holder.contains(" ") || holder.contains(".") || holder.contains(",") || holder.contains("\"")) { index = r.nextInt(sentence.length()); holder = sentence.substring(index, index + 1); } return holder; } public static String readToString(String path) throws FileNotFoundException { String wholeThing = ""; Scanner scanner = new Scanner(new File(path)); while (scanner.hasNext()) { wholeThing += scanner.next() + " "; } return wholeThing; } }