LardaX

LittleJohn

Feb 10th, 2017
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.21 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.LinkedHashMap;
  5. import java.util.Map;
  6. import java.util.regex.Matcher;
  7. import java.util.regex.Pattern;
  8.  
  9. public class LittleJohn {
  10.     private static final String SMALL = "small";
  11.     private static final String MEDIUM = "medium";
  12.     private static final String LARGE = "large";
  13.     public static void main(String[] args) throws IOException {
  14.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  15.         String regex = "([>]{1,3})[-]{5}([>]{1,2})";
  16.         Pattern pattern = Pattern.compile(regex);
  17.  
  18.  
  19.         Map<String, Integer> arrows = new LinkedHashMap<>();
  20.         arrows.put(SMALL, 0);
  21.         arrows.put(MEDIUM, 0);
  22.         arrows.put(LARGE, 0);
  23.  
  24.         for (int i = 0; i < 4; i++) {
  25.             String hay = reader.readLine();
  26.             Matcher matcher = pattern.matcher(hay);
  27.             int start = 0;
  28.  
  29.             while (matcher.find(start)) {
  30.                 int leftSize = matcher.group(1).length();
  31.                 int rightSize = matcher.group(2).length();
  32.  
  33.                 if (leftSize == 1 && rightSize == 1 || (leftSize == 1 && rightSize == 2)) {
  34.                     arrows.put(SMALL, arrows.get(SMALL) + 1);
  35.                     start = matcher.end();
  36.                 } else if ((leftSize == 2 && rightSize == 1) || (leftSize == 3 && rightSize == 1)) {
  37.                     arrows.put(MEDIUM, arrows.get(MEDIUM) + 1);
  38.                     start = matcher.end();
  39.  
  40.                 } else if (leftSize == 3 && rightSize == 2) {
  41.                     arrows.put(LARGE, arrows.get(LARGE) + 1);
  42.                     start = matcher.end();
  43.  
  44.                 } else {
  45.                     start = matcher.start() + matcher.group(1).length();
  46.                 }
  47.             }
  48.         }
  49.  
  50.         StringBuilder sb = new StringBuilder();
  51.  
  52.         arrows.values().forEach(sb::append);
  53.  
  54.         String binary = Integer.toBinaryString(Integer.valueOf(sb.toString()));
  55.         String concatenatedBinary = binary + new StringBuilder(binary).reverse();
  56.         int result = Integer.parseInt(concatenatedBinary, 2);
  57.  
  58.         System.out.println(result);
  59.     }
  60.  
  61. }
Advertisement
Add Comment
Please, Sign In to add comment