Balanced brackets: Difference between revisions
Content added Content deleted
(→{{header|Go}}: improved generator) |
|||
Line 955: | Line 955: | ||
import ( |
import ( |
||
⚫ | |||
"fmt" |
"fmt" |
||
"math/rand" |
"math/rand" |
||
⚫ | |||
"time" |
"time" |
||
) |
) |
||
Line 966: | Line 966: | ||
func generate(n uint) string { |
func generate(n uint) string { |
||
a := bytes.Repeat([]byte("[]"), int(n)) |
|||
for i := len(a) - 1; i >= 1; i-- { |
|||
j := rand.Intn(i + 1) |
|||
a[i], a[j] = a[j], a[i] |
|||
pb[i] = nb[px[i]] |
|||
} |
} |
||
return string( |
return string(a) |
||
} |
} |
||
Line 984: | Line 983: | ||
case ']': |
case ']': |
||
if open == 0 { |
if open == 0 { |
||
fmt.Println(" |
fmt.Println("not ok") |
||
return |
return |
||
Line 990: | Line 989: | ||
open-- |
open-- |
||
default: |
default: |
||
fmt.Println(" |
fmt.Println("not ok") |
||
return |
return |
||
} |
} |
||
} |
} |
||
if open == 0 { |
if open == 0 { |
||
fmt.Println(" |
fmt.Println("ok") |
||
} else { |
} else { |
||
fmt.Println(" |
fmt.Println("not ok") |
||
} |
} |
||
} |
} |
||
func main() { |
func main() { |
||
rand.Seed(time.Now().UnixNano()) |
|||
for i := uint(0); i < 10; i++ { |
for i := uint(0); i < 10; i++ { |
||
testBalanced(generate(i)) |
testBalanced(generate(i)) |
||
Line 1,009: | Line 1,009: | ||
Output: |
Output: |
||
<pre> |
<pre> |
||
: |
: ok |
||
][: not ok |
|||
] |
]][[: not ok |
||
[]]] |
[[][]]: ok |
||
[]]]] |
[][[][]]: ok |
||
]][]] |
[[[][][]]]: ok |
||
[[][[[ |
]][[]]][[[[]: not ok |
||
]][[[]][[][[]]: not ok |
|||
[[[ |
[[[[[]]][]]][]][: not ok |
||
[[] |
[][[][[]][][[][]]]: ok |
||
(): not ok |
|||
(): Unexpected content. Generator fail? |
|||
</pre> |
</pre> |
||