Show More
@@ -166,6 +166,7 b' def genbits(n):' | |||
|
166 | 166 | |
|
167 | 167 | # Gray Code. See https://en.wikipedia.org/wiki/Gray_code |
|
168 | 168 | gray = lambda x: x ^ (x >> 1) |
|
169 | reversegray = dict((gray(i), i) for i in range(m)) | |
|
169 | 170 | |
|
170 | 171 | # Generate (n * 2) bit gray code, yield lower n bits as X, and look for |
|
171 | 172 | # the next unused gray code where higher n bits equal to X. |
@@ -177,7 +178,9 b' def genbits(n):' | |||
|
177 | 178 | x = 0 |
|
178 | 179 | yield x |
|
179 | 180 | for i in range(m * m): |
|
181 | x = reversegray[x] | |
|
180 | 182 | y = gray(a[x] + x * m) & (m - 1) |
|
183 | assert a[x] < m | |
|
181 | 184 | a[x] += 1 |
|
182 | 185 | x = y |
|
183 | 186 | yield x |
General Comments 0
You need to be logged in to leave comments.
Login now