有一个很好的解决方案:使用 itertools 的格雷码顺序的笛卡尔积?,有没有办法给这个解决方案添加一些简单的东西,以报告从一个元素到格雷码顺序的笛卡尔积的下一个元素发生变化的集合(它的索引)?也就是说, agray_code_product_with_change(['a','b','c'], [0,1], ['x','y'])
会产生如下内容:
(('a',0,'x'), -1)
(('a',0,'y'), 2)
(('a',1,'y'), 1)
(('a',1,'x'), 2)
(('b',1,'x'), 0)
(('b',1,'y'), 2)
(('b',0,'y'), 1)
(('b',0,'x'), 2)
(('c',0,'x'), 0)
(('c',0,'y'), 2)
(('c',1,'y'), 1)
(('c',1,'x'), 2)
我想避免采用连续元组之间的“差异”,但要进行恒定时间更新——因此要从格雷码顺序开始。一种解决方案可能是编写一个index_changed
迭代器,即返回index_changed(3,2,2)
我想要的序列-1,2,1,2,0,2,1,2,0,2,1,2
,但是可以将更简单的东西添加到上面的解决方案中以获得相同的结果吗?