Advertisement
Guest User

Untitled

a guest
Oct 5th, 2015
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.21 KB | None | 0 0
  1. import jdk.nashorn.internal.objects.NativeNumber;
  2.  
  3. import java.util.*;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. /**
  8.  * Created by SET on 4.10.2015 г..
  9.  */
  10. public class DragonSharp {
  11.     public static void main(String[] args) {
  12.         Scanner scanner = new Scanner(System.in);
  13.         int n = Integer.parseInt(scanner.nextLine());
  14.         List<String[]> output = new ArrayList<>();
  15.         for (int i = 0; i < n; i++) {
  16.             String input = scanner.nextLine();
  17.             String[] parts = input.split("(?<=if|\\)|else|\\d|out|loop) (?=loop|\\d|out|\"|\\()", 6);
  18.             String lastElement = parts[parts.length-1];
  19.             if (lastElement.charAt(0) != '"' ||
  20.                     lastElement.charAt(lastElement.length()-2) != '"' ||
  21.                     lastElement.charAt(lastElement.length() -1) != ';') {
  22.                 System.out.printf("Compile time error @ line %d%n", i+1);
  23.                 return;
  24.             }
  25.             output.add(parts);
  26.         }
  27.         StringBuilder sb = new StringBuilder();
  28.         for (int i = 0; i < n; i++) {
  29.             if (output.get(i)[0].equals("if")) {
  30.                 String statement = output.get(i)[1].substring(1, output.get(i)[1].length()-1);
  31.                 if (verifyCorrectStatement(statement)) {
  32.                     if (output.get(i)[2].equals("loop")) {
  33.                         int loops = Integer.parseInt(output.get(i)[3]);
  34.                         for (int j = 0; j < loops; j++) {
  35.                             sb.append(output.get(i)[5].substring(1,output.get(i)[5].length()-2));
  36.                             sb.append("\r\n");
  37.                         }
  38.                     }else{
  39.                         sb.append(output.get(i)[3].substring(1,output.get(i)[3].length()-2));
  40.                         sb.append("\r\n");
  41.                     }
  42.  
  43.  
  44.                 }else if (i <= n-2 && output.get(i + 1)[0].equals("else")){
  45.                     if (output.get(i+1)[1].equals("loop")) {
  46.                         int loops = Integer.parseInt(output.get(i+1)[2]);
  47.                         for (int j = 0; j < loops; j++) {
  48.                             sb.append(output.get(i+1)[4].substring(1, output.get(i+1)[4].length() - 2));
  49.                             sb.append("\r\n");
  50.                         }
  51.                     }else{
  52.                         sb.append(output.get(i+1)[2].substring(1,output.get(i+1)[2].length()-2));
  53.                         sb.append("\r\n");
  54.                     }
  55.  
  56.                 }
  57.                
  58.             }
  59.         }
  60.         System.out.print(sb);
  61.     }
  62.  
  63.     private static boolean verifyCorrectStatement(String statement) {
  64.         Pattern pattern = Pattern.compile("(\\d+)(==|>|<)(\\d+)");
  65.         Matcher matcher = pattern.matcher(statement);
  66.         matcher.find();
  67.         int firstNumber = Integer.parseInt(matcher.group(1));
  68.         int secondNumber = Integer.parseInt(matcher.group(3));
  69.         String operation = matcher.group(2);
  70.         switch (operation){
  71.             case "==": return firstNumber == secondNumber;
  72.             case ">": return firstNumber > secondNumber;
  73.             case "<": return firstNumber < secondNumber;
  74.             default: return false;
  75.         }
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement