Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.06 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.regex.Matcher;
  6. import java.util.regex.Pattern;
  7.  
  8. public class P03_Ascent {
  9.  
  10.     public static void main(String[] args) throws IOException {
  11.         BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
  12.  
  13.         String regex = "(,|_)([a-zA-Z]+)([0-9])";
  14.         Pattern pattern = Pattern.compile(regex);
  15.  
  16.         LinkedHashMap<String, String> memorized = new LinkedHashMap<>();
  17.  
  18.         while (true) {
  19.             String input = console.readLine();
  20.             if ("Ascend".equals(input)) {
  21.                 break;
  22.             }
  23.             for (String s : memorized.keySet()) {
  24.                 input = input.replaceAll(s, memorized.get(s));
  25.             }
  26.            
  27.             Matcher matcher = pattern.matcher(input);
  28.             while (matcher.find()) {
  29.                 String toReplace = matcher.group(0);
  30.                 String operation = matcher.group(1);
  31.                 String text = matcher.group(2);
  32.                 int operand = Integer.parseInt(matcher.group(3));
  33.  
  34.                 String decoded = getDecodedText(operation, text, operand);
  35.  
  36.                 input = input.replaceAll(toReplace, decoded);
  37.                 memorized.put(toReplace, decoded);
  38.             }
  39.  
  40.             System.out.println(input);
  41.         }
  42.     }
  43.  
  44.     private static String getDecodedText(String operation, String text, int operand) {
  45.         String decoded = "";
  46.         switch (operation) {
  47.             case ",":
  48.                 for (int i = 0; i < text.length(); i++) {
  49.                     char letter = (char) (text.charAt(i) + operand);
  50.                     decoded += letter;
  51.                 }
  52.                 break;
  53.             case "_":
  54.                 for (int i = 0; i < text.length(); i++) {
  55.                     char letter = (char) (text.charAt(i) - operand);
  56.                     decoded += letter;
  57.                 }
  58.  
  59.                 break;
  60.         }
  61.         return decoded;
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement