Advertisement
Guest User

EmojiDetector

a guest
Apr 4th, 2020
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.53 KB | None | 0 0
  1. import java.math.BigInteger;
  2. import java.util.LinkedHashMap;
  3. import java.util.Scanner;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. public class EmojiDetector {
  8.     public static void main(String[] args) {
  9.         Scanner scanner = new Scanner(System.in);
  10.  
  11.         String initialLine = scanner.nextLine();
  12.  
  13.         String regExForDigits = "(?<digit>[\\d])";
  14.         String regExForEmoji = "(?<emoji>([:]{2}|[*]{2})[A-Z][a-z]{2,}(\\2))";
  15.  
  16.         Pattern patternForDigits = Pattern.compile(regExForDigits);
  17.         Matcher matcherForDigits = patternForDigits.matcher(initialLine);
  18.  
  19.         BigInteger bigIntegerCoolThreshold = new BigInteger("0");
  20.  
  21.         if (matcherForDigits.find()) {
  22.             bigIntegerCoolThreshold = bigIntegerCoolThreshold
  23.                     .add(new BigInteger(matcherForDigits.group("digit")));
  24.             while (matcherForDigits.find()) {
  25.                 bigIntegerCoolThreshold = bigIntegerCoolThreshold
  26.                         .multiply(new BigInteger(matcherForDigits.group("digit")));
  27.             }
  28.         }
  29.  
  30.         LinkedHashMap<String, String> mapListOfEmojiAndCoolnessCheck = new LinkedHashMap<>();
  31.  
  32.         Pattern patternForEmoji = Pattern.compile(regExForEmoji);
  33.         Matcher matcherForEmoji = patternForEmoji.matcher(initialLine);
  34.  
  35.         while (matcherForEmoji.find()) {
  36.             String emojiToAdd = matcherForEmoji.group("emoji");
  37.  
  38.             BigInteger currentEmojiCoolness = new BigInteger("0");
  39.             for (int i = 2; i < emojiToAdd.length() - 2; i++) {
  40.                 int charValueToAdd = emojiToAdd.charAt(i);
  41.                 currentEmojiCoolness = currentEmojiCoolness.add(new BigInteger("" + charValueToAdd));
  42.             }
  43.  
  44.             if (currentEmojiCoolness.compareTo(bigIntegerCoolThreshold) >= 0) {
  45.                 String isCoolEmoji = "yes";
  46.                 mapListOfEmojiAndCoolnessCheck.put(emojiToAdd, isCoolEmoji);
  47.             } else {
  48.                 String isCoolEmoji = "no";
  49.                 mapListOfEmojiAndCoolnessCheck.put(emojiToAdd, isCoolEmoji);
  50.             }
  51.         }
  52.  
  53.         System.out.println("Cool threshold: " + bigIntegerCoolThreshold);
  54.  
  55.         System.out.println(String.format("%d emojis found in the text. The cool ones are:",
  56.                 mapListOfEmojiAndCoolnessCheck.size()));
  57.         mapListOfEmojiAndCoolnessCheck
  58.                 .entrySet()
  59.                 .stream()
  60.                 .filter(e -> e.getValue().equals("yes"))
  61.                 .forEach(e -> System.out.println(e.getKey()));
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement