rendered paste body/** * */import java.io.File;import java.io.FileNotFoundException;import java.util.ArrayList;import java.util.Scanner;/** * @author Brian * */public class ELIC{ static String input = "732559968"; static ArrayList<String> wordList = new ArrayList<String>(); public static void findWord(final int k) { if (input.substring(k, k + 1).equals("2")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith("a")) { findWord(k + 1, "a"); } if (wordList.get(z).startsWith("b")) { findWord(k + 1, "b"); } if (wordList.get(z).startsWith("c")) { findWord(k + 1, "c"); } } // abc; } else if (input.substring(k, k + 1).equals("3")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith("d")) { findWord(k + 1, "d"); } if (wordList.get(z).startsWith("e")) { findWord(k + 1, "e"); } if (wordList.get(z).startsWith("f")) { findWord(k + 1, "f"); } } // def; } else if (input.substring(k, k + 1).equals("4")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith("g")) { findWord(k + 1, "g"); } if (wordList.get(z).startsWith("h")) { findWord(k + 1, "h"); } if (wordList.get(z).startsWith("i")) { findWord(k + 1, "i"); } } // ghi; } else if (input.substring(k, k + 1).equals("5")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith("j")) { findWord(k + 1, "j"); } if (wordList.get(z).startsWith("k")) { findWord(k + 1, "k"); } if (wordList.get(z).startsWith("l")) { findWord(k + 1, "l"); } } // jkl; } else if (input.substring(k, k + 1).equals("6")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith("m")) { findWord(k + 1, "m"); } if (wordList.get(z).startsWith("n")) { findWord(k + 1, "n"); } if (wordList.get(z).startsWith("o")) { findWord(k + 1, "o"); } } // mno; } else if (input.substring(k, k + 1).equals("7")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith("p")) { findWord(k + 1, "p"); } if (wordList.get(z).startsWith("q")) { findWord(k + 1, "q"); } if (wordList.get(z).startsWith("r")) { findWord(k + 1, "r"); } if (wordList.get(z).startsWith("s")) { findWord(k + 1, "s"); } } // pqrs; } else if (input.substring(k, k + 1).equals("8")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith("t")) { findWord(k + 1, "t"); } if (wordList.get(z).startsWith("u")) { findWord(k + 1, "u"); } if (wordList.get(z).startsWith("v")) { findWord(k + 1, "v"); } } // tuv; } else if (input.substring(k, k + 1).equals("9")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith("w")) { findWord(k + 1, "w"); } if (wordList.get(z).startsWith("x")) { findWord(k + 1, "x"); } if (wordList.get(z).startsWith("y")) { findWord(k + 1, "y"); } if (wordList.get(z).startsWith("z")) { findWord(k + 1, "z"); } } // wxyz; } } public static boolean findWord(final int k, final String prefix) { if(k<input.length()) { if (input.substring(k, k + 1).equals("2")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith(prefix + "a")) { if (findWord(k + 1, prefix + "a")) { return true; } } if (wordList.get(z).startsWith(prefix + "b")) { if (findWord(k + 1, prefix + "b")) { return true; } } if (wordList.get(z).startsWith(prefix + "c")) { if (findWord(k + 1, prefix + "c")) { return true; } } System.out.println(prefix); findWord(k + 1); return false; } // abc; } else if (input.substring(k, k + 1).equals("3")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith(prefix + "d")) { if (findWord(k + 1, prefix + "d")) { return true; } } if (wordList.get(z).startsWith(prefix + "e")) { if (findWord(k + 1, prefix + "e")) { return true; } } if (wordList.get(z).startsWith(prefix + "f")) { if (findWord(k + 1, prefix + "f")) { return true; } } System.out.println(prefix); findWord(k + 1); return false; } // def; } else if (input.substring(k, k + 1).equals("4")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith(prefix + "g")) { if (findWord(k + 1, prefix + "g")) { return true; } } if (wordList.get(z).startsWith(prefix + "h")) { if (findWord(k + 1, prefix + "h")) { return true; } } if (wordList.get(z).startsWith(prefix + "i")) { if (findWord(k + 1, prefix + "i")) { return true; } } System.out.println(prefix); findWord(k + 1); return false; } // ghi; } else if (input.substring(k, k + 1).equals("5")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith(prefix + "j")) { if (findWord(k + 1, prefix + "j")) { return true; } } if (wordList.get(z).startsWith(prefix + "k")) { if (findWord(k + 1, prefix + "k")) { return true; } } if (wordList.get(z).startsWith(prefix + "l")) { if (findWord(k + 1, prefix + "i")) { return true; } } System.out.println(prefix); findWord(k + 1); return false; } // jkl; } else if (input.substring(k, k + 1).equals("6")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith(prefix + "m")) { if (findWord(k + 1, prefix + "m")) { return true; } } if (wordList.get(z).startsWith(prefix + "n")) { if (findWord(k + 1, prefix + "n")) { return true; } } if (wordList.get(z).startsWith(prefix + "o")) { if (findWord(k + 1, prefix + "o")) { return true; } } System.out.println(prefix); findWord(k + 1); return false; } // mno; } else if (input.substring(k, k + 1).equals("7")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith(prefix + "p")) { if (findWord(k + 1, prefix + "p")) { return true; } } if (wordList.get(z).startsWith(prefix + "q")) { if (findWord(k + 1, prefix + "q")) { return true; } } if (wordList.get(z).startsWith(prefix + "r")) { if (findWord(k + 1, prefix + "r")) { return true; } } if (wordList.get(z).startsWith(prefix + "s")) { if (findWord(k + 1, prefix + "s")) { return true; } } System.out.println(prefix); findWord(k + 1); return false; } // pqrs; } else if (input.substring(k, k + 1).equals("8")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith(prefix + "t")) { if (findWord(k + 1, prefix + "t")) { return true; } } if (wordList.get(z).startsWith(prefix + "u")) { if (findWord(k + 1, prefix + "u")) { return true; } } if (wordList.get(z).startsWith(prefix + "v")) { if (findWord(k + 1, prefix + "v")) { return true; } } System.out.println(prefix); findWord(k + 1); return false; } // tuv; } else if (input.substring(k, k + 1).equals("9")) { for (int z = 0; z < wordList.size(); z++) { if (wordList.get(z).startsWith(prefix + "w")) { if (findWord(k + 1, prefix + "w")) { return true; } } if (wordList.get(z).startsWith(prefix + "x")) { if (findWord(k + 1, prefix + "x")) { return true; } } if (wordList.get(z).startsWith(prefix + "y")) { if (findWord(k + 1, prefix + "y")) { return true; } } if (wordList.get(z).startsWith(prefix + "z")) { if (findWord(k + 1, prefix + "z")) { return true; } } System.out.println(prefix); findWord(k + 1); return false; } // wxyz; } } return false; } /** * @param args * @throws FileNotFoundException */ public static void main(final String[] args) throws FileNotFoundException { // TODO Auto-generated method stub // ArrayList<String> wordList = new ArrayList<String>(); final Scanner wordsIn = new Scanner(new File(System.getProperty("user.dir") + File.separator + "SINGLE.TXT")); while (wordsIn.hasNextLine()) { wordList.add(wordsIn.nextLine()); } findWord(0); }}