RosettaCodeData/Task/Balanced-brackets/Elena/balanced-brackets.elena

47 lines
841 B
Text
Raw Permalink Normal View History

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()
}