[2015-10-19] Challenge #237 [Easy] Broken Keyboard : dailyprogrammer
Help! My keyboard is broken, only a few keys work any more. If I tell you what keys work, can you tell me what words I can write?
(You should use the trusty enable1.txt file, or
X. Using Regular Expression
public static String find(List<String> dict, String keyboard) {
return dict.stream()
.filter(word -> word.matches("[" + keyboard + "]+"))
.max(new Comparator<String>() {
@Override public int compare(String arg0, String arg1) {
return Integer.compare(arg0.length(), arg1.length());
}
}).get();
}
public static Optional<String> find(String keyboard) throws IOException {
try (Stream<String> dict = Files.lines(Paths.get("enable1.txt"))) {
return dict
.filter(word -> word.matches("[" + keyboard + "]+"))
.max(Comparator.comparing(String::length));
}
}
List<String> li = Files.readAllLines(new File("enable1.txt").toPath(), Charset.forName("UTF-8"));
String[] keys = {"abcd", "qwer", "hjklo"};
for (String str: keys) {
Pattern pat = Pattern.compile("^([" + str + "]+)$");
String out = li.stream()
.filter((s) -> pat.matcher(s).find())
.reduce("", (a, b) -> a.length() >= b.length() ? a : b);
System.out.printf("Keys %s -> %s\n", str, out);
X. not efficient
public static void main(String[] args) {
File dictFile = new File(filePath);
try {
dictArray = Files.readAllLines(dictFile.toPath());
} catch (IOException e) {
e.printStackTrace();
}
for (String key : keys) {
for (String words : dictArray) {
String temp = words;
char[] charArray = key.toCharArray();
for (char chars : charArray)
temp = temp.replace(Character.toString(chars), "");
if (temp.equals(""))
if (found.length() < words.length())
found = words;
}
foundArray.add(found);
found = "";
}
System.out.println(foundArray);
}
Read full article from [2015-10-19] Challenge #237 [Easy] Broken Keyboard : dailyprogrammer
Help! My keyboard is broken, only a few keys work any more. If I tell you what keys work, can you tell me what words I can write?
(You should use the trusty enable1.txt file, or
/usr/share/dict/words
to chose your valid English words from.)Input Description
You'll be given a line with a single integer on it, telling you how many lines to read. Then you'll be given that many lines, each line a list of letters representing the keys that work on my keyboard. Example:3 abcd qwer hjklo
Output Description
Your program should emit the longest valid English language word you can make for each keyboard configuration.abcd = bacaba qwer = ewerer hjklo = kolokolo
X. Using Regular Expression
public static String find(List<String> dict, String keyboard) {
return dict.stream()
.filter(word -> word.matches("[" + keyboard + "]+"))
.max(new Comparator<String>() {
@Override public int compare(String arg0, String arg1) {
return Integer.compare(arg0.length(), arg1.length());
}
}).get();
}
public static Optional<String> find(String keyboard) throws IOException {
try (Stream<String> dict = Files.lines(Paths.get("enable1.txt"))) {
return dict
.filter(word -> word.matches("[" + keyboard + "]+"))
.max(Comparator.comparing(String::length));
}
}
List<String> li = Files.readAllLines(new File("enable1.txt").toPath(), Charset.forName("UTF-8"));
String[] keys = {"abcd", "qwer", "hjklo"};
for (String str: keys) {
Pattern pat = Pattern.compile("^([" + str + "]+)$");
String out = li.stream()
.filter((s) -> pat.matcher(s).find())
.reduce("", (a, b) -> a.length() >= b.length() ? a : b);
System.out.printf("Keys %s -> %s\n", str, out);
X. not efficient
public static void main(String[] args) {
File dictFile = new File(filePath);
try {
dictArray = Files.readAllLines(dictFile.toPath());
} catch (IOException e) {
e.printStackTrace();
}
for (String key : keys) {
for (String words : dictArray) {
String temp = words;
char[] charArray = key.toCharArray();
for (char chars : charArray)
temp = temp.replace(Character.toString(chars), "");
if (temp.equals(""))
if (found.length() < words.length())
found = words;
}
foundArray.add(found);
found = "";
}
System.out.println(foundArray);
}
Read full article from [2015-10-19] Challenge #237 [Easy] Broken Keyboard : dailyprogrammer