| 1234567891011121314151617181920212223242526272829303132333435 | package main// generate gray code directlyfunc grayCodeOld(n int) []int {	res := make([]int, 1<<uint(n))	code := 0	for i := 1; i < 1<<uint(n); i++ {		if i&1 == 1 {			code ^= 1		} else {			base := 1			for ; base&code == 0; base <<= 1 {			}			code ^= base << 1		}		res[i] = code	}	return res}func grayCode(n int) (res []int) {	m := uint(n)	// binary to gray code: G(n) = (B(n)/2) xor B(n)	// form wikipedia	for i := 0; i < 1<<m; i++ {		res = append(res, i)		res[i] ^= res[i] >> 1	}	return}/* func main() {	fmt.Println(grayCode(2))} */
 |