【发布时间】:2019-10-11 07:43:28
【问题描述】:
我有两个号码:n 和 sp。我想用sp 元素创建一个列表元素的模式,这些元素像二进制数字一样旋转到n。为了详细说明第二部分,这里举个例子:
n = 2, sp = 3
[0, 0, 0]
[0, 0, 1]
[0, 1, 0]
[0, 1, 1]
[1, 0, 0]
[1, 0, 1]
[1, 1, 0]
[1, 1, 1]
同样:
n = 3, sp = 3
[0, 0, 0]
[0, 0, 1]
[0, 0, 2]
[0, 1, 0]
[0, 2, 0]
[0, 1, 1]
[0, 1, 2]
[0, 2, 1]
[0, 2, 2]
[1, 0, 0]
[1, 0, 1]
[1, 0, 2]
[1, 1, 0]
[1, 2, 0]
[1, 1, 1]
[1, 1, 2]
[1, 2, 1]
[1, 2, 2]
[2, 0, 0]
[2, 0, 1]
[2, 0, 2]
[2, 1, 0]
[2, 2, 0]
[2, 1, 1]
[2, 1, 2]
[2, 2, 1]
[2, 2, 2]
我希望保持我在示例中给出的顺序,即首先分配 LSB,然后是下一位,依此类推...
我想不出任何策略来解决这样的问题。我所能想到的就是使用sp 创建一个大小为sp 的临时列表,例如,如果sp == 3,则temp_list 可以是[0 0 0]。然后我们以某种方式进行迭代,以便获得模式。
算法的复杂度没有限制,虽然更短的算法会很好。
【问题讨论】:
-
您的想法是一个好的开始!向我们展示您的代码尝试,我们一定能够帮助您解决问题。 :)
-
我所能做的就是创建 2 个嵌套循环,从 LSB 开始,我们首先将 LSB 设置为 1,然后设置为 2,然后设置为 0。之后,我们移动到下一位并增加它并再次重复最里面的循环。它正在工作,但是对于更大的
sp值它会失败(我需要更多循环)。这就是为什么我对我的方法有所不同。 :D
标签: python algorithm list design-patterns