Guest User

Untitled

a guest
Jul 21st, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.18 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.*;
  5.  
  6. public class Linquistics {
  7. public static void main(String[] args) throws IOException {
  8. Map<String, LinkedHashSet<String>> collections = new LinkedHashMap<>();
  9. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  10. while (true) {
  11. String input = reader.readLine();
  12.  
  13. if (input.equals("exit")) {
  14. break;
  15. }
  16.  
  17. String[] tokens = input.split("\\.");
  18. if (tokens.length > 1) {
  19. collections.putIfAbsent(tokens[0], new LinkedHashSet<>());
  20.  
  21. addElements(collections,tokens[0], Arrays.copyOfRange(tokens, 1, tokens.length));
  22. } else if (input.equals("exit")) {
  23. break;
  24. } else if (Character.isDigit(input.charAt(0))) {
  25. int n = Integer.parseInt("" + input.charAt(0));
  26. collections
  27. .entrySet()
  28. .stream()
  29. .sorted((a,b) -> Integer.compare(b.getValue().size(), a.getValue().size()))
  30. .limit(1)
  31. .forEach(c -> {
  32. c
  33. .getValue()
  34. .stream()
  35. .sorted((a,b) -> Integer.compare(a.length(), b.length()))
  36. .limit(n)
  37. .forEach(m -> {
  38. System.out.println("* " + m);
  39. });
  40. });
  41. } else {
  42. if (collections.containsKey(input)) {
  43. collections.get(input).stream().sorted((a, b) -> {
  44. int index = Integer.compare(b.length(), a.length());
  45. if (index == 0) {
  46. index = countUniqueCharacters(b) - countUniqueCharacters(a);
  47. }
  48. return index;
  49. })
  50. .forEach(m -> System.out.printf("* %s%n",m));
  51. }
  52. }
  53. }
  54. String[] lastLine = reader.readLine().split("\\s+");
  55.  
  56. String methodToSearch = lastLine[0];
  57. String selectionToSearch = lastLine[1];
  58.  
  59. collections
  60. .entrySet()
  61. .stream()
  62. .filter(a -> a.getValue().contains(methodToSearch))
  63. .sorted((a, b) -> {
  64. int index = Integer.compare(b.getValue().size(), a.getValue().size());
  65. if (index == 0) {
  66. String firstValue = b.getValue().stream().min(Comparator.comparingInt(String::length)).get();
  67. String secondValue = a.getValue().stream().min(Comparator.comparingInt(String::length)).get();
  68.  
  69. index = Integer.compare(firstValue.length(), secondValue.length());
  70. }
  71.  
  72. return index;
  73. })
  74. .forEach(c -> {
  75. System.out.println(c.getKey());
  76. if (selectionToSearch.equals("all")) {
  77. c.getValue().stream()
  78. .sorted((m1, m2) -> {
  79. return Integer.compare(m2.length(), m1.length());
  80. })
  81. .forEach(m -> System.out.println("* " + m));
  82. }
  83. });
  84.  
  85. //for (String key : collections.keySet()) {
  86. // System.out.println(key + " --> " + collections.get(key));
  87. //}
  88.  
  89. }
  90.  
  91. private static void addElements(Map<String, LinkedHashSet<String>> collections, String key, String[] methods) {
  92. for (String method : methods) {
  93. collections.get(key).add(method.replace("(", "").replace(")", ""));
  94. }
  95. }
  96. public static int countUniqueCharacters(String input)
  97. {
  98. String unique = input.replaceAll("(.)(?=.*?\\1)", "");
  99. return unique.length();
  100. }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment