2016-12-05 23:44:36 +01:00
|
|
|
func balanced (str) {
|
|
|
|
|
|
2017-09-23 10:01:46 +02:00
|
|
|
var depth = 0
|
2016-12-05 23:44:36 +01:00
|
|
|
str.each { |c|
|
|
|
|
|
if(c=='['){ ++depth }
|
|
|
|
|
elsif(c==']'){ --depth < 0 && return false }
|
2017-09-23 10:01:46 +02:00
|
|
|
}
|
2016-12-05 23:44:36 +01:00
|
|
|
|
2017-09-23 10:01:46 +02:00
|
|
|
return !depth
|
2016-12-05 23:44:36 +01:00
|
|
|
}
|
|
|
|
|
|
2017-09-23 10:01:46 +02:00
|
|
|
for str [']','[','[[]','][]','[[]]','[[]]]][][]]','x[ y [ [] z ]][ 1 ][]abcd'] {
|
|
|
|
|
printf("%sbalanced\t: %s\n", balanced(str) ? "" : "NOT ", str)
|
|
|
|
|
}
|