fork download
  1. import java.util.Stack
  2.  
  3. fun main() {
  4. val br = System.`in`.bufferedReader()
  5. val stack = Stack<Char>()
  6.  
  7. val sb = StringBuilder()
  8. while (true) {
  9. val sentence = br.readLine()
  10. if (sentence == ".") {
  11. break
  12. }
  13.  
  14. var balanced = true
  15. loop@ for (c in sentence) {
  16. when (c) {
  17. '(' -> stack.push(c)
  18. ')' -> {
  19. if (stack.isEmpty() || stack.peek() != '(') {
  20. balanced = false
  21. break@loop
  22. }
  23. stack.pop()
  24. }
  25. '[' -> stack.push(c)
  26. ']' -> {
  27. if (stack.isEmpty() || stack.peek() != '[') {
  28. balanced = false
  29. break@loop
  30. }
  31. stack.pop()
  32. }
  33. }
  34. }
  35.  
  36. sb.append(if (balanced) "yes" else "no").append("\n")
  37.  
  38. stack.clear()
  39. }
  40.  
  41. println(sb)
  42. }
Success #stdin #stdout 0.08s 38404KB
stdin
So when I die (the [first] I will see in (heaven) is a score list).
[ first in ] ( first out ).
Half Moon tonight (At least it is better than no Moon at all].
A rope may form )( a trail in a maze.
Help( I[m being held prisoner in a fortune cookie factory)].
([ (([( [ ] ) ( ) (( ))] )) ]).
 .
.
stdout
yes
yes
no
no
no
yes
yes