Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
30
Task/Anagrams/Java/anagrams-1.java
Normal file
30
Task/Anagrams/Java/anagrams-1.java
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
import java.net.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
public class WordsOfEqChars {
|
||||
public static void main(String[] args) throws IOException {
|
||||
URL url = new URL("http://wiki.puzzlers.org/pub/wordlists/unixdict.txt");
|
||||
InputStreamReader isr = new InputStreamReader(url.openStream());
|
||||
BufferedReader reader = new BufferedReader(isr);
|
||||
|
||||
Map<String, Collection<String>> anagrams = new HashMap<String, Collection<String>>();
|
||||
String word;
|
||||
int count = 0;
|
||||
while ((word = reader.readLine()) != null) {
|
||||
char[] chars = word.toCharArray();
|
||||
Arrays.sort(chars);
|
||||
String key = new String(chars);
|
||||
if (!anagrams.containsKey(key))
|
||||
anagrams.put(key, new ArrayList<String>());
|
||||
anagrams.get(key).add(word);
|
||||
count = Math.max(count, anagrams.get(key).size());
|
||||
}
|
||||
|
||||
reader.close();
|
||||
|
||||
for (Collection<String> ana : anagrams.values())
|
||||
if (ana.size() >= count)
|
||||
System.out.println(ana);
|
||||
}
|
||||
}
|
||||
53
Task/Anagrams/Java/anagrams-2.java
Normal file
53
Task/Anagrams/Java/anagrams-2.java
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
import java.net.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.function.*;
|
||||
|
||||
public interface Anagram {
|
||||
public static <AUTOCLOSEABLE extends AutoCloseable, OUTPUT> Supplier<OUTPUT> tryWithResources(Callable<AUTOCLOSEABLE> callable, Function<AUTOCLOSEABLE, Supplier<OUTPUT>> function, Supplier<OUTPUT> defaultSupplier) {
|
||||
return () -> {
|
||||
try (AUTOCLOSEABLE autoCloseable = callable.call()) {
|
||||
return function.apply(autoCloseable).get();
|
||||
} catch (Throwable throwable) {
|
||||
return defaultSupplier.get();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static <INPUT, OUTPUT> Function<INPUT, OUTPUT> function(Supplier<OUTPUT> supplier) {
|
||||
return i -> supplier.get();
|
||||
}
|
||||
|
||||
public static void main(String... args) {
|
||||
Map<String, Collection<String>> anagrams = new ConcurrentSkipListMap<>();
|
||||
int count = tryWithResources(
|
||||
() -> new BufferedReader(
|
||||
new InputStreamReader(
|
||||
new URL(
|
||||
"http://wiki.puzzlers.org/pub/wordlists/unixdict.txt"
|
||||
).openStream()
|
||||
)
|
||||
),
|
||||
reader -> () -> reader.lines()
|
||||
.parallel()
|
||||
.mapToInt(word -> {
|
||||
char[] chars = word.toCharArray();
|
||||
Arrays.parallelSort(chars);
|
||||
String key = Arrays.toString(chars);
|
||||
Collection<String> collection = anagrams.computeIfAbsent(
|
||||
key, function(ArrayList::new)
|
||||
);
|
||||
collection.add(word);
|
||||
return collection.size();
|
||||
})
|
||||
.max()
|
||||
.orElse(0),
|
||||
() -> 0
|
||||
).get();
|
||||
anagrams.values().stream()
|
||||
.filter(ana -> ana.size() >= count)
|
||||
.forEach(System.out::println)
|
||||
;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue