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

47 lines
805 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
import system'routines;
import extensions;
import extensions'text;
randomBrackets(len)
{
2024-03-06 22:25:12 -08:00
if (0 == len)
{
2025-08-11 18:05:26 -07:00
^ EmptyString
2024-03-06 22:25:12 -08:00
}
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()
}
2023-07-01 11:58:00 -04:00
}
extension op
{
2024-03-06 22:25:12 -08:00
get isBalanced()
{
var counter := new Integer(0);
2023-07-01 11:58:00 -04:00
2024-03-06 22:25:12 -08:00
self.seekEach::(ch => counter.append((ch==$91).iif(1,-1)) < 0);
2023-07-01 11:58:00 -04:00
2024-03-06 22:25:12 -08:00
^ (0 == counter)
}
2023-07-01 11:58:00 -04:00
}
2026-02-01 16:33:20 -08:00
public Program()
2023-07-01 11:58:00 -04:00
{
2024-03-06 22:25:12 -08:00
for(int len := 0; len < 9; len += 1)
{
var str := randomBrackets(len);
2023-07-01 11:58:00 -04:00
2025-08-11 18:05:26 -07:00
Console.printLine("""",str,"""",str.isBalanced ? " is balanced" : " is not balanced")
2024-03-06 22:25:12 -08:00
};
2023-07-01 11:58:00 -04:00
2025-08-11 18:05:26 -07:00
Console.readChar()
2023-07-01 11:58:00 -04:00
}