mirror of
https://github.com/golang/go
synced 2024-11-13 19:00:25 -07:00
46 lines
829 B
Go
46 lines
829 B
Go
|
// compile
|
||
|
|
||
|
// Copyright 2016 The Go Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package bug
|
||
|
|
||
|
func example(n int) (rc int) {
|
||
|
var cc, ll, pp, rr [27]int
|
||
|
for q0 := 0; q0 < n-2; q0++ {
|
||
|
for q1 := q0 + 2; q1 < n; q1++ {
|
||
|
var c, d, l, p, r int
|
||
|
b0 := 1 << uint(q0)
|
||
|
b1 := 1 << uint(q1)
|
||
|
l = ((b0 << 1) | b1) << 1
|
||
|
c = b0 | b1 | (-1 << uint(n))
|
||
|
r = ((b0 >> 1) | b1) >> 1
|
||
|
E:
|
||
|
if c != -1 {
|
||
|
p = ^(l | c | r)
|
||
|
} else {
|
||
|
rc++
|
||
|
goto R
|
||
|
}
|
||
|
L:
|
||
|
if p != 0 {
|
||
|
lsb := p & -p
|
||
|
p &^= lsb
|
||
|
ll[d], cc[d], rr[d], pp[d] = l, c, r, p
|
||
|
l, c, r = (l|lsb)<<1, c|lsb, (r|lsb)>>1
|
||
|
d++
|
||
|
goto E
|
||
|
}
|
||
|
R:
|
||
|
d--
|
||
|
if d >= 0 {
|
||
|
l, c, r, p = ll[d], cc[d], rr[d], pp[d]
|
||
|
goto L
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
rc <<= 1
|
||
|
return
|
||
|
}
|