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