我有一个类似的问题:
我们有 20 个球,每个球都是唯一的,并通过 1 到 20 的数字进行标识。编号从 1 到 5 的球是黄色,从 6 到 10 是绿色,从 10 到 15 是红色,从 16 到 20 是蓝色。找到一种随机洗球的方法,同时遵守约束:“两个连续的球不能具有相同的颜色”。
例子:
我考虑过两种我不满意的方法,正在寻找更好的一种
问题:我们可能会遇到无法完成绘图的情况,例如,如果仅剩下相同颜色的球。
问题是有些组合永远不会被绘制,例如红,黄,红,黄......绿,蓝,绿,蓝。
编辑:
这是 Unlikus 解决方案的实现。非常感谢他。
import enum
import random
Color = enum.Enum('Color', ['RED', 'GREEN', 'BLUE', "YELLOW"])
NB_PERMUTATION = {
(Color.RED, 1, 0, 0, 0): 1,
(Color.GREEN, 0, 1, 0, 0): 1,
(Color.BLUE, 0, 0, 1, 0): 1,
(Color.YELLOW, 0, …Run Code Online (Sandbox Code Playgroud)