【发布时间】:2026-02-11 00:15:01
【问题描述】:
有一个很好的解决方案:Cartesian product in Gray code order with itertools?,有没有办法在这个解决方案中添加一些简单的东西来报告从一个元素到另一个笛卡尔积的变化的集合(它的索引)格雷码顺序?也就是说,gray_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 迭代器,ie,index_changed(3,2,2) 将返回我想要的序列-1,2,1,2,0,2,1,2,0,2,1,2,但可以在上面的解决方案中添加更简单的东西来实现相同的效果结果?
【问题讨论】:
标签: python cartesian-product gray-code constant-time