ulvis.paste.net

Paste Search Dynamic
Recent pastes
split
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Collections;
  5. import java.util.LinkedList;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.Set;
  9. import java.util.Stack;
  10. import java.util.TreeMap;
  11. import java.util.TreeSet;
  12.  
  13. public class SimPa {
  14.     public static void main(string[] args) throws ioexception {
  15.         bufferedreader reader = new bufferedreader(new inputstreamreader(system.in));
  16.         List<String> info = new LinkedList<>();
  17.         string redak;
  18.         while ((redak = reader.readLine()) != null && !(redak.isEmpty())) {
  19.             info.add(redak);
  20.         }
  21.  
  22.         string[] ulazniNizovi = crtaSplit(info.get(0));
  23.         string[] svaStanja = zarezSplit(info.get(1));
  24.         string[] sviZnakovi = zarezSplit(info.get(2));
  25.         string[] sviZnakoviStoga = zarezSplit(info.get(3));
  26.         string[] prihvatljivaStanja = zarezSplit(info.get(4));
  27.         string pocStanje = info.get(5);
  28.         string pocZnakStoga = info.get(6);
  29.         Set<String> setPrihvatljivih = new TreeSet<>();
  30.         for (int i = 0; i < prihvatljivaStanja.length; i++) {
  31.             setPrihvatljivih.add(prihvatljivaStanja[i]);
  32.         }
  33.  
  34.         List<String> fjeprijelaza = new LinkedList<>();
  35.         int zast = 0;
  36.         for (string iduci : info) {
  37.             if (zast >= 7) {
  38.                 fjeprijelaza.add(iduci);
  39.             }
  40.             zast++;
  41.         }
  42.         Map<String, String> mapaFjaPrijelaza = new TreeMap<>();
  43.         for (string pom : fjeprijelaza) {
  44.             string[] KeyVal = pom.split("->");
  45.             mapaFjaPrijelaza.put(KeyVal[0], KeyVal[1]);
  46.         }
  47.         Stack<String> stog = new Stack<>();
  48.         for (int i = 0; i < ulazniNizovi.length; i++) {
  49.             stog.clear();
  50.             int uvjet = 0;
  51.             string[] ulazniNiz = zarezSplit(ulazniNizovi[i]);
  52.             stog.push(pocZnakStoga);
  53.             system.out.print(pocStanje + "#" + stog.peek() + "|");
  54.             int j = 0;
  55.             string trenutnoStanje = pocStanje;
  56.             for (j = 0; j < ulazniNiz.length;) {
  57.                 string kljuc = trenutnoStanje + "," + ulazniNiz[j] + "," + stog.peek();
  58.                 string kljucEps = trenutnoStanje + ",$," + stog.peek();
  59.  
  60.                 if (mapaFjaPrijelaza.get(kljuc) != null) {
  61.                     string iduce = mapaFjaPrijelaza.get(kljuc);
  62.                     string[] novoStanjeElementiStoga = iduce.split(",");
  63.                     trenutnoStanje = novoStanjeElementiStoga[0];
  64.                     string noviZnakoviStoga = novoStanjeElementiStoga[1];
  65.                     stog.pop();
  66.                     system.out.print(trenutnoStanje + "#");
  67.                     for (int k = noviZnakoviStoga.length() - 1; k >= 0; k--) {
  68.                         if (!string.valueOf(noviZnakoviStoga.charAt(k)).equals("$")) {
  69.                             stog.push(string.valueOf(noviZnakoviStoga.charAt(k)));
  70.                         }
  71.                     }
  72.                     string[] pomPolje;
  73.                     collections.reverse(stog);
  74.                     for (string elem : stog) {
  75.                         if (!elem.equals("$")) {
  76.                             system.out.print(elem);
  77.                         }
  78.                     }
  79.                     collections.reverse(stog);
  80.                     system.out.print("|");
  81.                     j++;
  82.                 } else if (mapaFjaPrijelaza.containsKey(kljucEps)) {
  83.                     string iduce = mapaFjaPrijelaza.get(kljucEps);
  84.                     string[] novoStanjeElementiStoga = iduce.split(",");
  85.                     trenutnoStanje = novoStanjeElementiStoga[0];
  86.                     string noviZnakoviStoga = novoStanjeElementiStoga[1];
  87.                     stog.pop();
  88.                     system.out.print(trenutnoStanje + "#");
  89.                     for (int k = noviZnakoviStoga.length() - 1; k >= 0; k--) {
  90.                         stog.push(string.valueOf(noviZnakoviStoga.charAt(k)));
  91.  
  92.                     }
  93.                     collections.reverse(stog);
  94.                     for (string elem : stog) {
  95.  
  96.                         system.out.print(elem);
  97.  
  98.                     }
  99.                     collections.reverse(stog);
  100.                     system.out.print("|");
  101.                 } else {
  102.                     system.out.println("fail|" + 0);
  103.                     uvjet = 1;
  104.                     break;
  105.                 }
  106.                 // ako nema te produkcije vrati ispisi fail i brejkaj sve za te nizove
  107.  
  108.             }
  109.             int uvjet2 = 1;
  110.             if (setPrihvatljivih.contains(trenutnoStanje)) {
  111.                 uvjet2 = 0;
  112.             }
  113.             while (uvjet2 == 1) {
  114.                 string pom = "pom";
  115.  
  116.                 string kljuc3 = trenutnoStanje + ",$," + stog.peek();
  117.                 if (mapaFjaPrijelaza.containsKey(kljuc3)) {
  118.                     string iduce = mapaFjaPrijelaza.get(trenutnoStanje + ",$," + stog.peek());
  119.                     string[] novoStanjeElementiStoga = iduce.split(",");
  120.                     trenutnoStanje = novoStanjeElementiStoga[0];
  121.                     string noviZnakoviStoga = novoStanjeElementiStoga[1];
  122.                     stog.pop();
  123.                     system.out.print(trenutnoStanje + "#");
  124.                     for (int k = noviZnakoviStoga.length() - 1; k >= 0; k--) {
  125.                         stog.push(string.valueOf(noviZnakoviStoga.charAt(k)));
  126.  
  127.                     }
  128.                     collections.reverse(stog);
  129.                     for (string elem : stog) {
  130.                         if(stog.size() == 1 && stog.peek().equals("$")){
  131.                             system.out.print("$");
  132.                         }
  133.                         else {
  134.                             system.out.print(elem);
  135.                         }
  136.                     }
  137.                     collections.reverse(stog);
  138.                     system.out.print("|");
  139.  
  140.                 } else {
  141.                     uvjet2 = 0;
  142.                 }
  143.                 if (setPrihvatljivih.contains(trenutnoStanje)) {
  144.                     uvjet2 = 0;
  145.                 }
  146.             }
  147.  
  148.             if (uvjet == 1) {
  149.                 uvjet = 0;
  150.             } else {
  151.                 if (setPrihvatljivih.contains(trenutnoStanje)) {
  152.                     system.out.println(1);
  153.                 } else {
  154.                     system.out.println(0);
  155.                 }
  156.             }
  157.         }
  158.  
  159.     }
  160.  
  161.     public static string[] zarezSplit(string stanja) {
  162.         string[] pomPolje = stanja.split(",");
  163.         return pomPolje;
  164.     }
  165.  
  166.     public static string[] crtaSplit(string stanja) {
  167.         string[] pomPolje = stanja.split("\\|");
  168.         return pomPolje;
  169.     }
  170. }
Parsed in 0.159 seconds