Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 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. Matcher matcher;
  16. LinkedHashMap<String, String> memorized = new LinkedHashMap<>();
  17. while (true) {
  18. String input = console.readLine();
  19. if ("Ascend".equals(input)) {
  20. break;
  21. }
  22.  
  23. matcher = pattern.matcher(input);
  24. while (matcher.find()){
  25. String toReplace = matcher.group(0);
  26. String operation = matcher.group(1);
  27. String text = matcher.group(2);
  28. int operand = Integer.parseInt(matcher.group(3));
  29.  
  30. String decoded = getDecodedText(operation, text, operand);
  31.  
  32. input = input.replaceAll(toReplace, decoded);
  33. for (String s : memorized.keySet()) {
  34. if (input.contains(s)){
  35. input = input.replace(s, memorized.get(s));
  36. }
  37. }
  38. memorized.put(toReplace, decoded);
  39. matcher = pattern.matcher(input);
  40. }
  41.  
  42. System.out.println(input);
  43. }
  44. }
  45.  
  46. private static String getDecodedText(String operation, String text, int operand) {
  47. String decoded = "";
  48. switch (operation){
  49. case ",":
  50. for (int i = 0; i < text.length(); i++) {
  51. char letter = (char) (text.charAt(i) + operand);
  52. decoded +=(letter);
  53. }
  54. break;
  55. case "_":
  56. for (int i = 0; i < text.length(); i++) {
  57. char letter = (char) (text.charAt(i) - operand);
  58. decoded += (letter);
  59. }
  60.  
  61. break;
  62. }
  63. return decoded;
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement