-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmoser.py
345 lines (345 loc) · 13.4 KB
/
moser.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
# Moser De Bruijn sequence, thanks to NoFate for telling me this
bruijn = [
0x00000000, 0x00000001, 0x00000004,
0x00000005, 0x00000010, 0x00000011,
0x00000014, 0x00000015, 0x00000040,
0x00000041, 0x00000044, 0x00000045,
0x00000050, 0x00000051, 0x00000054,
0x00000055, 0x00000100, 0x00000101,
0x00000104, 0x00000105, 0x00000110,
0x00000111, 0x00000114, 0x00000115,
0x00000140, 0x00000141, 0x00000144,
0x00000145, 0x00000150, 0x00000151,
0x00000154, 0x00000155, 0x00000400,
0x00000401, 0x00000404, 0x00000405,
0x00000410, 0x00000411, 0x00000414,
0x00000415, 0x00000440, 0x00000441,
0x00000444, 0x00000445, 0x00000450,
0x00000451, 0x00000454, 0x00000455,
0x00000500, 0x00000501, 0x00000504,
0x00000505, 0x00000510, 0x00000511,
0x00000514, 0x00000515, 0x00000540,
0x00000541, 0x00000544, 0x00000545,
0x00000550, 0x00000551, 0x00000554,
0x00000555, 0x00001000, 0x00001001,
0x00001004, 0x00001005, 0x00001010,
0x00001011, 0x00001014, 0x00001015,
0x00001040, 0x00001041, 0x00001044,
0x00001045, 0x00001050, 0x00001051,
0x00001054, 0x00001055, 0x00001100,
0x00001101, 0x00001104, 0x00001105,
0x00001110, 0x00001111, 0x00001114,
0x00001115, 0x00001140, 0x00001141,
0x00001144, 0x00001145, 0x00001150,
0x00001151, 0x00001154, 0x00001155,
0x00001400, 0x00001401, 0x00001404,
0x00001405, 0x00001410, 0x00001411,
0x00001414, 0x00001415, 0x00001440,
0x00001441, 0x00001444, 0x00001445,
0x00001450, 0x00001451, 0x00001454,
0x00001455, 0x00001500, 0x00001501,
0x00001504, 0x00001505, 0x00001510,
0x00001511, 0x00001514, 0x00001515,
0x00001540, 0x00001541, 0x00001544,
0x00001545, 0x00001550, 0x00001551,
0x00001554, 0x00001555, 0x00004000,
0x00004001, 0x00004004, 0x00004005,
0x00004010, 0x00004011, 0x00004014,
0x00004015, 0x00004040, 0x00004041,
0x00004044, 0x00004045, 0x00004050,
0x00004051, 0x00004054, 0x00004055,
0x00004100, 0x00004101, 0x00004104,
0x00004105, 0x00004110, 0x00004111,
0x00004114, 0x00004115, 0x00004140,
0x00004141, 0x00004144, 0x00004145,
0x00004150, 0x00004151, 0x00004154,
0x00004155, 0x00004400, 0x00004401,
0x00004404, 0x00004405, 0x00004410,
0x00004411, 0x00004414, 0x00004415,
0x00004440, 0x00004441, 0x00004444,
0x00004445, 0x00004450, 0x00004451,
0x00004454, 0x00004455, 0x00004500,
0x00004501, 0x00004504, 0x00004505,
0x00004510, 0x00004511, 0x00004514,
0x00004515, 0x00004540, 0x00004541,
0x00004544, 0x00004545, 0x00004550,
0x00004551, 0x00004554, 0x00004555,
0x00005000, 0x00005001, 0x00005004,
0x00005005, 0x00005010, 0x00005011,
0x00005014, 0x00005015, 0x00005040,
0x00005041, 0x00005044, 0x00005045,
0x00005050, 0x00005051, 0x00005054,
0x00005055, 0x00005100, 0x00005101,
0x00005104, 0x00005105, 0x00005110,
0x00005111, 0x00005114, 0x00005115,
0x00005140, 0x00005141, 0x00005144,
0x00005145, 0x00005150, 0x00005151,
0x00005154, 0x00005155, 0x00005400,
0x00005401, 0x00005404, 0x00005405,
0x00005410, 0x00005411, 0x00005414,
0x00005415, 0x00005440, 0x00005441,
0x00005444, 0x00005445, 0x00005450,
0x00005451, 0x00005454, 0x00005455,
0x00005500, 0x00005501, 0x00005504,
0x00005505, 0x00005510, 0x00005511,
0x00005514, 0x00005515, 0x00005540,
0x00005541, 0x00005544, 0x00005545,
0x00005550, 0x00005551, 0x00005554,
0x00005555, 0x00010000, 0x00010001,
0x00010004, 0x00010005, 0x00010010,
0x00010011, 0x00010014, 0x00010015,
0x00010040, 0x00010041, 0x00010044,
0x00010045, 0x00010050, 0x00010051,
0x00010054, 0x00010055, 0x00010100,
0x00010101, 0x00010104, 0x00010105,
0x00010110, 0x00010111, 0x00010114,
0x00010115, 0x00010140, 0x00010141,
0x00010144, 0x00010145, 0x00010150,
0x00010151, 0x00010154, 0x00010155,
0x00010400, 0x00010401, 0x00010404,
0x00010405, 0x00010410, 0x00010411,
0x00010414, 0x00010415, 0x00010440,
0x00010441, 0x00010444, 0x00010445,
0x00010450, 0x00010451, 0x00010454,
0x00010455, 0x00010500, 0x00010501,
0x00010504, 0x00010505, 0x00010510,
0x00010511, 0x00010514, 0x00010515,
0x00010540, 0x00010541, 0x00010544,
0x00010545, 0x00010550, 0x00010551,
0x00010554, 0x00010555, 0x00011000,
0x00011001, 0x00011004, 0x00011005,
0x00011010, 0x00011011, 0x00011014,
0x00011015, 0x00011040, 0x00011041,
0x00011044, 0x00011045, 0x00011050,
0x00011051, 0x00011054, 0x00011055,
0x00011100, 0x00011101, 0x00011104,
0x00011105, 0x00011110, 0x00011111,
0x00011114, 0x00011115, 0x00011140,
0x00011141, 0x00011144, 0x00011145,
0x00011150, 0x00011151, 0x00011154,
0x00011155, 0x00011400, 0x00011401,
0x00011404, 0x00011405, 0x00011410,
0x00011411, 0x00011414, 0x00011415,
0x00011440, 0x00011441, 0x00011444,
0x00011445, 0x00011450, 0x00011451,
0x00011454, 0x00011455, 0x00011500,
0x00011501, 0x00011504, 0x00011505,
0x00011510, 0x00011511, 0x00011514,
0x00011515, 0x00011540, 0x00011541,
0x00011544, 0x00011545, 0x00011550,
0x00011551, 0x00011554, 0x00011555,
0x00014000, 0x00014001, 0x00014004,
0x00014005, 0x00014010, 0x00014011,
0x00014014, 0x00014015, 0x00014040,
0x00014041, 0x00014044, 0x00014045,
0x00014050, 0x00014051, 0x00014054,
0x00014055, 0x00014100, 0x00014101,
0x00014104, 0x00014105, 0x00014110,
0x00014111, 0x00014114, 0x00014115,
0x00014140, 0x00014141, 0x00014144,
0x00014145, 0x00014150, 0x00014151,
0x00014154, 0x00014155, 0x00014400,
0x00014401, 0x00014404, 0x00014405,
0x00014410, 0x00014411, 0x00014414,
0x00014415, 0x00014440, 0x00014441,
0x00014444, 0x00014445, 0x00014450,
0x00014451, 0x00014454, 0x00014455,
0x00014500, 0x00014501, 0x00014504,
0x00014505, 0x00014510, 0x00014511,
0x00014514, 0x00014515, 0x00014540,
0x00014541, 0x00014544, 0x00014545,
0x00014550, 0x00014551, 0x00014554,
0x00014555, 0x00015000, 0x00015001,
0x00015004, 0x00015005, 0x00015010,
0x00015011, 0x00015014, 0x00015015,
0x00015040, 0x00015041, 0x00015044,
0x00015045, 0x00015050, 0x00015051,
0x00015054, 0x00015055, 0x00015100,
0x00015101, 0x00015104, 0x00015105,
0x00015110, 0x00015111, 0x00015114,
0x00015115, 0x00015140, 0x00015141,
0x00015144, 0x00015145, 0x00015150,
0x00015151, 0x00015154, 0x00015155,
0x00015400, 0x00015401, 0x00015404,
0x00015405, 0x00015410, 0x00015411,
0x00015414, 0x00015415, 0x00015440,
0x00015441, 0x00015444, 0x00015445,
0x00015450, 0x00015451, 0x00015454,
0x00015455, 0x00015500, 0x00015501,
0x00015504, 0x00015505, 0x00015510,
0x00015511, 0x00015514, 0x00015515,
0x00015540, 0x00015541, 0x00015544,
0x00015545, 0x00015550, 0x00015551,
0x00015554, 0x00015555, 0x00040000,
0x00040001, 0x00040004, 0x00040005,
0x00040010, 0x00040011, 0x00040014,
0x00040015, 0x00040040, 0x00040041,
0x00040044, 0x00040045, 0x00040050,
0x00040051, 0x00040054, 0x00040055,
0x00040100, 0x00040101, 0x00040104,
0x00040105, 0x00040110, 0x00040111,
0x00040114, 0x00040115, 0x00040140,
0x00040141, 0x00040144, 0x00040145,
0x00040150, 0x00040151, 0x00040154,
0x00040155, 0x00040400, 0x00040401,
0x00040404, 0x00040405, 0x00040410,
0x00040411, 0x00040414, 0x00040415,
0x00040440, 0x00040441, 0x00040444,
0x00040445, 0x00040450, 0x00040451,
0x00040454, 0x00040455, 0x00040500,
0x00040501, 0x00040504, 0x00040505,
0x00040510, 0x00040511, 0x00040514,
0x00040515, 0x00040540, 0x00040541,
0x00040544, 0x00040545, 0x00040550,
0x00040551, 0x00040554, 0x00040555,
0x00041000, 0x00041001, 0x00041004,
0x00041005, 0x00041010, 0x00041011,
0x00041014, 0x00041015, 0x00041040,
0x00041041, 0x00041044, 0x00041045,
0x00041050, 0x00041051, 0x00041054,
0x00041055, 0x00041100, 0x00041101,
0x00041104, 0x00041105, 0x00041110,
0x00041111, 0x00041114, 0x00041115,
0x00041140, 0x00041141, 0x00041144,
0x00041145, 0x00041150, 0x00041151,
0x00041154, 0x00041155, 0x00041400,
0x00041401, 0x00041404, 0x00041405,
0x00041410, 0x00041411, 0x00041414,
0x00041415, 0x00041440, 0x00041441,
0x00041444, 0x00041445, 0x00041450,
0x00041451, 0x00041454, 0x00041455,
0x00041500, 0x00041501, 0x00041504,
0x00041505, 0x00041510, 0x00041511,
0x00041514, 0x00041515, 0x00041540,
0x00041541, 0x00041544, 0x00041545,
0x00041550, 0x00041551, 0x00041554,
0x00041555, 0x00044000, 0x00044001,
0x00044004, 0x00044005, 0x00044010,
0x00044011, 0x00044014, 0x00044015,
0x00044040, 0x00044041, 0x00044044,
0x00044045, 0x00044050, 0x00044051,
0x00044054, 0x00044055, 0x00044100,
0x00044101, 0x00044104, 0x00044105,
0x00044110, 0x00044111, 0x00044114,
0x00044115, 0x00044140, 0x00044141,
0x00044144, 0x00044145, 0x00044150,
0x00044151, 0x00044154, 0x00044155,
0x00044400, 0x00044401, 0x00044404,
0x00044405, 0x00044410, 0x00044411,
0x00044414, 0x00044415, 0x00044440,
0x00044441, 0x00044444, 0x00044445,
0x00044450, 0x00044451, 0x00044454,
0x00044455, 0x00044500, 0x00044501,
0x00044504, 0x00044505, 0x00044510,
0x00044511, 0x00044514, 0x00044515,
0x00044540, 0x00044541, 0x00044544,
0x00044545, 0x00044550, 0x00044551,
0x00044554, 0x00044555, 0x00045000,
0x00045001, 0x00045004, 0x00045005,
0x00045010, 0x00045011, 0x00045014,
0x00045015, 0x00045040, 0x00045041,
0x00045044, 0x00045045, 0x00045050,
0x00045051, 0x00045054, 0x00045055,
0x00045100, 0x00045101, 0x00045104,
0x00045105, 0x00045110, 0x00045111,
0x00045114, 0x00045115, 0x00045140,
0x00045141, 0x00045144, 0x00045145,
0x00045150, 0x00045151, 0x00045154,
0x00045155, 0x00045400, 0x00045401,
0x00045404, 0x00045405, 0x00045410,
0x00045411, 0x00045414, 0x00045415,
0x00045440, 0x00045441, 0x00045444,
0x00045445, 0x00045450, 0x00045451,
0x00045454, 0x00045455, 0x00045500,
0x00045501, 0x00045504, 0x00045505,
0x00045510, 0x00045511, 0x00045514,
0x00045515, 0x00045540, 0x00045541,
0x00045544, 0x00045545, 0x00045550,
0x00045551, 0x00045554, 0x00045555,
0x00050000, 0x00050001, 0x00050004,
0x00050005, 0x00050010, 0x00050011,
0x00050014, 0x00050015, 0x00050040,
0x00050041, 0x00050044, 0x00050045,
0x00050050, 0x00050051, 0x00050054,
0x00050055, 0x00050100, 0x00050101,
0x00050104, 0x00050105, 0x00050110,
0x00050111, 0x00050114, 0x00050115,
0x00050140, 0x00050141, 0x00050144,
0x00050145, 0x00050150, 0x00050151,
0x00050154, 0x00050155, 0x00050400,
0x00050401, 0x00050404, 0x00050405,
0x00050410, 0x00050411, 0x00050414,
0x00050415, 0x00050440, 0x00050441,
0x00050444, 0x00050445, 0x00050450,
0x00050451, 0x00050454, 0x00050455,
0x00050500, 0x00050501, 0x00050504,
0x00050505, 0x00050510, 0x00050511,
0x00050514, 0x00050515, 0x00050540,
0x00050541, 0x00050544, 0x00050545,
0x00050550, 0x00050551, 0x00050554,
0x00050555, 0x00051000, 0x00051001,
0x00051004, 0x00051005, 0x00051010,
0x00051011, 0x00051014, 0x00051015,
0x00051040, 0x00051041, 0x00051044,
0x00051045, 0x00051050, 0x00051051,
0x00051054, 0x00051055, 0x00051100,
0x00051101, 0x00051104, 0x00051105,
0x00051110, 0x00051111, 0x00051114,
0x00051115, 0x00051140, 0x00051141,
0x00051144, 0x00051145, 0x00051150,
0x00051151, 0x00051154, 0x00051155,
0x00051400, 0x00051401, 0x00051404,
0x00051405, 0x00051410, 0x00051411,
0x00051414, 0x00051415, 0x00051440,
0x00051441, 0x00051444, 0x00051445,
0x00051450, 0x00051451, 0x00051454,
0x00051455, 0x00051500, 0x00051501,
0x00051504, 0x00051505, 0x00051510,
0x00051511, 0x00051514, 0x00051515,
0x00051540, 0x00051541, 0x00051544,
0x00051545, 0x00051550, 0x00051551,
0x00051554, 0x00051555, 0x00054000,
0x00054001, 0x00054004, 0x00054005,
0x00054010, 0x00054011, 0x00054014,
0x00054015, 0x00054040, 0x00054041,
0x00054044, 0x00054045, 0x00054050,
0x00054051, 0x00054054, 0x00054055,
0x00054100, 0x00054101, 0x00054104,
0x00054105, 0x00054110, 0x00054111,
0x00054114, 0x00054115, 0x00054140,
0x00054141, 0x00054144, 0x00054145,
0x00054150, 0x00054151, 0x00054154,
0x00054155, 0x00054400, 0x00054401,
0x00054404, 0x00054405, 0x00054410,
0x00054411, 0x00054414, 0x00054415,
0x00054440, 0x00054441, 0x00054444,
0x00054445, 0x00054450, 0x00054451,
0x00054454, 0x00054455, 0x00054500,
0x00054501, 0x00054504, 0x00054505,
0x00054510, 0x00054511, 0x00054514,
0x00054515, 0x00054540, 0x00054541,
0x00054544, 0x00054545, 0x00054550,
0x00054551, 0x00054554, 0x00054555,
0x00055000, 0x00055001, 0x00055004,
0x00055005, 0x00055010, 0x00055011,
0x00055014, 0x00055015, 0x00055040,
0x00055041, 0x00055044, 0x00055045,
0x00055050, 0x00055051, 0x00055054,
0x00055055, 0x00055100, 0x00055101,
0x00055104, 0x00055105, 0x00055110,
0x00055111, 0x00055114, 0x00055115,
0x00055140, 0x00055141, 0x00055144,
0x00055145, 0x00055150, 0x00055151,
0x00055154, 0x00055155, 0x00055400,
0x00055401, 0x00055404, 0x00055405,
0x00055410, 0x00055411, 0x00055414,
0x00055415, 0x00055440, 0x00055441,
0x00055444, 0x00055445, 0x00055450,
0x00055451, 0x00055454, 0x00055455,
0x00055500, 0x00055501, 0x00055504,
0x00055505, 0x00055510, 0x00055511,
0x00055514, 0x00055515, 0x00055540,
0x00055541, 0x00055544, 0x00055545,
0x00055550, 0x00055551, 0x00055554,
0x00055555
]