我正在尝试制作一个魔方扰频器,它可以打印一系列随机的动作来扰频我的魔方。然而,有时我的程序会打印出两个相互抵消的动作。我怎样才能避免这种情况?你知道吗
到目前为止,我的情况是:
import random
scramble_length = random.randint(9,24)
move_list = ["U","U'","D","D'","B","B'","F","F'","L","L'","R","R'"]
for x in range(scramble_length):
print(random.choice(move_list))
对不起,如果我的代码不是那么好。我才刚开始。你知道吗
而不是发表评论。你知道吗
立方体映射结构:
如果你引入坐标,你会得到例如字符串:
[“UC1”,“DR2”,“UC2'”,“DC3”,“U1C”,RR1]。你知道吗
此处RR1=“向右移动行1>;”。你知道吗
因此,添加映射结构,您的更改将以相同的精确取消动作结束,直接在彼此后面移动,这会大大减少。如果你的移动可以除以4,你可能会发现一个图块再次出现在同一个位置,但是其他两个图块(列或行)是不同的,而不管图块的颜色如何。你知道吗
考虑到正如Jean提到的,你需要记住最后一步(最后一步=[方向,行/列,行/列编号])。你知道吗
许多要编码的变量;p
在将可能的移动传递给
random.choice
之前,可以使用set difference从可能的移动中删除上一个移动的相反部分:样本输出:
我可以想出几种不同的方法来解决这个问题。你知道吗
您可以从列表中删除所有
'
移动。你的立方体将被一个随机的同方向的旋转序列所扰乱。你仍然有一个很小的可能性,四个相同的移动在一行抵消对方,但这是一个小得多的概率比两个相反的移动在一行。生成移动列表后,在一行中扫描两个取消的移动,然后替换其中一个(或洗牌列表)。一直这样做,直到你没有任何对取消的举动。
相关问题 更多 >
编程相关推荐