Balanced brackets: Difference between revisions

add UNIX Shell
(add UNIX Shell)
Line 4,353:
][[[[]]]][][ ][[[[]]]][][
[[]]]]][[][[ [[]] ]]][[][[ </pre>
 
=={{header|UNIX Shell}}==
{{works with|bash}}
<lang bash>generate() {
local b=()
local i j tmp
for ((i=1; i<=$1; i++)); do
b+=( '[' ']')
done
for ((i=${#b[@]}-1; i>0; i--)); do
j=$(rand $i)
tmp=${b[j]}
b[j]=${b[i]}
b[i]=$tmp
done
local IFS=
echo "${b[*]}"
}
 
# a random number in the range [0,n)
rand() {
echo $(( $RANDOM % $1 ))
}
 
balanced() {
local -i lvl=0
local i
for ((i=0; i<${#1}; i++)); do
case ${1:i:1} in
'[') ((lvl++));;
']') (( --lvl < 0 )) && return 1;;
esac
done
(( lvl == 0 )); return $?
}
 
for ((i=0; i<=10; i++)); do
test=$(generate $i)
balanced "$test" && result=OK || result="NOT OK"
printf "%s\t%s\n" "$test" "$result"
done</lang>
 
{{output}}
<pre> OK
][ NOT OK
[]][ NOT OK
[[][]] OK
]][[]][[ NOT OK
[[]][[][]] OK
[]][[[[]]]][ NOT OK
[[]][]][]][[[] NOT OK
[][][[[[][][]]]] OK
[][][[[[]]][[][]]] OK
][[]][][][[[]]][[]][ NOT OK</pre>
 
=={{header|Ursala}}==
Anonymous user