RosettaCodeData/Task/Balanced-brackets/GDScript/balanced-brackets.gd

41 lines
989 B
GDScript3
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
extends MainLoop
func generate_brackets(n: int) -> String:
2026-02-01 16:33:20 -08:00
var brackets: Array[String] = []
2023-07-01 11:58:00 -04:00
2026-02-01 16:33:20 -08:00
# Add opening and closing brackets
brackets.resize(2*n)
for i in range(0, 2*n, 2):
brackets[i] = "["
brackets[i+1] = "]"
2023-07-01 11:58:00 -04:00
2026-02-01 16:33:20 -08:00
brackets.shuffle()
return "".join(brackets)
2023-07-01 11:58:00 -04:00
func is_balanced(str: String) -> bool:
2026-02-01 16:33:20 -08:00
var unclosed_brackets := 0
for c in str:
match c:
"[":
unclosed_brackets += 1
"]":
if unclosed_brackets == 0:
return false
unclosed_brackets -= 1
_:
return false
return unclosed_brackets == 0
2023-07-01 11:58:00 -04:00
func _process(_delta: float) -> bool:
2026-02-01 16:33:20 -08:00
randomize()
2023-07-01 11:58:00 -04:00
2026-02-01 16:33:20 -08:00
for i in range(6):
var bracket_string := generate_brackets(i)
2023-07-01 11:58:00 -04:00
2026-02-01 16:33:20 -08:00
if is_balanced(bracket_string):
print("%sOK" % bracket_string.rpad(13))
else:
print("%sNOT OK" % bracket_string.rpad(11))
2023-07-01 11:58:00 -04:00
2026-02-01 16:33:20 -08:00
return true # Exit