2019-09-12 10:33:56 -07:00
|
|
|
import system'routines;
|
|
|
|
|
import extensions;
|
|
|
|
|
import extensions'text;
|
2013-10-27 22:24:23 +00:00
|
|
|
|
2018-08-17 15:15:24 +01:00
|
|
|
randomBrackets(len)
|
2019-09-12 10:33:56 -07:00
|
|
|
{
|
2018-08-17 15:15:24 +01:00
|
|
|
if (0 == len)
|
2019-09-12 10:33:56 -07:00
|
|
|
{
|
|
|
|
|
^emptyString
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var brackets :=
|
|
|
|
|
Array.allocate(len).populate:(i => $91)
|
|
|
|
|
+
|
|
|
|
|
Array.allocate(len).populate:(i => $93);
|
|
|
|
|
|
|
|
|
|
brackets := brackets.randomize(len * 2);
|
|
|
|
|
|
|
|
|
|
^ brackets.summarize(new StringWriter()).toString()
|
|
|
|
|
}
|
|
|
|
|
}
|
2015-11-18 06:14:39 +00:00
|
|
|
|
2017-09-23 10:01:46 +02:00
|
|
|
extension op
|
2015-11-18 06:14:39 +00:00
|
|
|
{
|
2019-09-12 10:33:56 -07:00
|
|
|
get isBalanced()
|
|
|
|
|
{
|
|
|
|
|
var counter := new Integer(0);
|
2013-04-10 16:57:12 -07:00
|
|
|
|
2019-09-12 10:33:56 -07:00
|
|
|
self.seekEach:(ch => counter.append((ch==$91).iif(1,-1)) < 0);
|
2013-04-10 16:57:12 -07:00
|
|
|
|
2019-09-12 10:33:56 -07:00
|
|
|
^ (0 == counter)
|
|
|
|
|
}
|
2015-11-18 06:14:39 +00:00
|
|
|
}
|
2015-02-20 00:35:01 -05:00
|
|
|
|
2019-09-12 10:33:56 -07:00
|
|
|
public program()
|
|
|
|
|
{
|
|
|
|
|
for(int len := 0, len < 9, len += 1)
|
|
|
|
|
{
|
|
|
|
|
var str := randomBrackets(len);
|
2013-04-10 16:57:12 -07:00
|
|
|
|
2019-09-12 10:33:56 -07:00
|
|
|
console.printLine("""",str,"""",str.isBalanced ? " is balanced" : " is not balanced")
|
|
|
|
|
};
|
2013-04-10 16:57:12 -07:00
|
|
|
|
2019-09-12 10:33:56 -07:00
|
|
|
console.readChar()
|
|
|
|
|
}
|