fork download
  1. public class Main {
  2. interface Expander {
  3. char[] expand(String compressed);
  4. }
  5. public static void main(String[] args) {
  6. Expander expander =
  7.  
  8. s->{int i=0;for(var c:s.toCharArray())i+="(<[{".indexOf(c)>-1?1:c=='|'?-1:0;for(;i-->0;)s+='|';s=s.replace(")","()").replace(">","<>").replace("]","[]").replace("}","{}");char[]c=s.toCharArray(),r=new char[124];r[40]=41;r[60]=62;r[91]=93;r['{']='}';for(var o="";++i<c.length;o="(<[{".indexOf(c[i])>-1&")>]}".indexOf(i+1<c.length?c[i+1]:0)<0?r[c[i]]+o:o){if(c[i]=='|'){c[i]=o.charAt(0);o=o.substring(1);}}return c;}
  9.  
  10. ;
  11. print(expander, "({(}|(}[)", "({({})({}[()])})");
  12. print(expander, "())))", "(()()()())");
  13. print(expander, "([([}()||||(>||{(})|>|}{((<}|||>}|}>}", "([([{}(())])](<>)){({}())<>}{}{((<{}>))<>{}}{}<>{}");
  14. print(expander, "({(}|(}[)|||}", "({({})({}[()])}{})");
  15. print(expander, "(((()))||(](((}}||(}([(((}))||||(]((}}|}|}}|||]||]|[))||(}))|}(}|(}]]|}", "((((()()()))([]((({}{}))({}([((({}()())))]([](({}{}){}){}{})))[]))[])[()()])({}()()){}({})({}[][]){}");
  16. }
  17. private static void print(Expander expander, String compressed, String solution) {
  18. String expanded = new String(expander.expand(compressed));
  19. System.out.println(expanded.equals(solution)+" "+expanded);
  20. }
  21. }
Success #stdin #stdout 0.18s 36708KB
stdin
Standard input is empty
stdout
true ({({})({}[()])})
true (()()()())
true ([([{}(())])](<>)){({}())<>}{}{((<{}>))<>{}}{}<>{}
true ({({})({}[()])}{})
true ((((()()()))([]((({}{}))({}([((({}()())))]([](({}{}){}){}{})))[]))[])[()()])({}()()){}({})({}[][]){}