fork(2) download
  1. -- http://i...content-available-to-author-only...e.com/sZ9tiN
  2. import Data.List
  3. import Data.Maybe
  4. checkBraces "" = True
  5. checkBraces e = checkBrace e [] where
  6. openBraces = "({["
  7. closeBraces = ")}]"
  8. braceToBrace fromBraces toBraces brace = toBraces!!(fromJust $ elemIndex brace fromBraces)
  9. otcBrace = braceToBrace openBraces closeBraces
  10. checkBrace (c:e) s | elem c openBraces = checkBrace e ((otcBrace c):s)
  11. checkBrace (c:e) (h:s) | (elem c closeBraces) && (h==c) = checkBrace e s
  12. checkBrace (_:e) _ = False
  13. checkBrace [] [] = True
  14. checkBrace [] _ = False
  15. main = mapM_ (print . checkBraces) bracesExpressionExamples where
  16. bracesExpressionExamples =
  17. [
  18. "({[{}]{}[]})",
  19. "({}}{[{}]{}[]})",
  20. "({[{}]{}[]}",
  21. "({[{}]{}]})",
  22. "({[{}{}[]})",
  23. "",
  24. "{}"
  25. ]
Success #stdin #stdout 0s 6220KB
stdin
Standard input is empty
stdout
True
False
False
False
False
True
True