Advertisement
Guest User

Untitled

a guest
Jun 9th, 2018
118
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.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. public class P12LittleJohn {
  8.     public static void main(String[] args) throws IOException {
  9.  
  10.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  11.  
  12.         Pattern smallArrow = Pattern.compile(">[-]{5}>");
  13.         Pattern mediumArrow = Pattern.compile(">{2}[-]{5}>");
  14.         Pattern largeArrow = Pattern.compile(">{3}[-]{5}>{2}");
  15.  
  16.         StringBuilder input = new StringBuilder();
  17.         for (int i = 0; i < 4; i++) {
  18.             String line = reader.readLine();
  19.             input.append(line).append("\r\n");
  20.         }
  21.  
  22.         StringBuilder builder = new StringBuilder();
  23.         Tuple result1 = countMatches(input.toString(), largeArrow);
  24.         Tuple result2 = countMatches(result1.getText(), mediumArrow);
  25.         Tuple result3 = countMatches(result2.getText(), smallArrow);
  26.         builder.append(result3.getCounter()).append(result2.getCounter()).append(result1.getCounter());
  27.  
  28.         String intermediate = Integer.toBinaryString(Integer.valueOf(builder.toString()));
  29.         StringBuilder inverseInterm = new StringBuilder();
  30.         for (int i = intermediate.length() - 1; i >= 0; i--) {
  31.             inverseInterm.append(intermediate.charAt(i));
  32.         }
  33.  
  34.         String binaryResult = intermediate + inverseInterm.toString();
  35.         Integer result = Integer.parseInt(binaryResult, 2);
  36.         System.out.println(result);
  37.     }
  38.  
  39.     private static Tuple countMatches(String input, Pattern pattern) {
  40.         int counter = 0;
  41.         Matcher matcher = pattern.matcher(input);
  42.         while (matcher.find()) {
  43.             counter++;
  44.         }
  45.  
  46.         input = matcher.replaceAll("arrow");
  47.         return new Tuple(counter, input);
  48.     }
  49.  
  50.     public static class Tuple {
  51.         private Integer counter;
  52.         private String text;
  53.  
  54.         Tuple(Integer counter, String text) {
  55.             this.counter = counter;
  56.             this.text = text;
  57.         }
  58.  
  59.         Integer getCounter() {
  60.             return counter;
  61.         }
  62.  
  63.         String getText() {
  64.             return text;
  65.         }
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement