fork download
  1. (ns challenge-0154.core
  2. (:require [clojure.string :refer [trim join]]))
  3.  
  4. (def bracket-pairs {"(" ")", "{" "}", "[" "]"})
  5.  
  6. (def obrackets (apply hash-set (map first (keys bracket-pairs))))
  7.  
  8. (def cbrackets (apply hash-set (map first (vals bracket-pairs))))
  9.  
  10. (defn debracket [string]
  11. (if-let [[_ before obracket in cbracket after] (re-find #"(.*?)([\[({])(.+)([\])}])(.*)" string)]
  12. (if (= (bracket-pairs obracket) cbracket)
  13. (join " " (map trim (remove (partial = "")[(debracket in) before after])))
  14. (throw (RuntimeException. (format "Bracket mismatch: got '%s' but expected '%s'" cbracket (bracket-pairs obracket)))))
  15. (if (some obrackets string)
  16. (throw (RuntimeException. "Missing closing bracket"))
  17. (if (some cbrackets string)
  18. (throw (RuntimeException. "Missing opening bracket"))
  19. string))))
  20.  
  21. (println (debracket (read-line)))
Runtime error #stdin #stdout #stderr 1.55s 389120KB
stdin
((your[drink {remember to))) ovaltine)
stdout
Standard output is empty
stderr
Exception in thread "main" java.lang.RuntimeException: Bracket mismatch: got ')' but expected ']'
	at challenge_0154.core$debracket.invoke(prog.clj:14)
	at challenge_0154.core$debracket.invoke(prog.clj:13)
	at challenge_0154.core$debracket.invoke(prog.clj:13)
	at challenge_0154.core$eval14.invoke(prog.clj:21)
	at clojure.lang.Compiler.eval(Compiler.java:6618)
	at clojure.lang.Compiler.load(Compiler.java:7062)
	at clojure.lang.Compiler.loadFile(Compiler.java:7019)
	at clojure.main$load_script.invoke(main.clj:286)
	at clojure.main$script_opt.invoke(main.clj:348)
	at clojure.main$main$fn__6676.invoke(main.clj:432)
	at clojure.main$main.doInvoke(main.clj:429)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.lang.Var.invoke(Var.java:415)
	at clojure.lang.AFn.applyToHelper(AFn.java:161)
	at clojure.lang.Var.applyTo(Var.java:532)
	at clojure.main.main(main.java:37)