假设我有一些不同颜色的球 . 为了举个例子,我们假设有4个红球,4个蓝球和2个绿球 . 如果我想均匀分布这些球,以便保持两个相同颜色的球之间的最一致的距离,我可以有以下顺序:
R-B-G-R-B-R-B-G-R-B
尽管蓝色和红色球与其对应球的距离并不总是相同,但它们的排列方式使得它们的距离保持一致,同时保持了绿球的一致性 .
在6个红球,5个蓝球和3个绿球的情况下,我可以有类似的东西:
R-B-R-G-B-R-B-G-R-B-R-G-R
我不完全确定“相同颜色的两个球之间的最大距离”的标准是什么,但是有某种算法或通用解决方案可以解决这个问题吗?如果是这种情况,这个问题的正式名称是什么?
1 回答
此问题类似于nD空间中的线条绘制(此处为3D) . 因此,您可以使用类似Bresenham / DDA的算法生成具有公平项目分布的序列(而不是在任何维度上公平分布像素移位) . 任意found example
(我没有检查它的正确性 - 也许分区
dm/2
可能会产生比错误加倍更糟糕的结果):将
x1-x0
替换为第一个颜色计数,y1-y0
替换为秒,依此类推 . 在成功的if条件下输出相应的颜色:{x1 -= dx; if (x1 < 0) { x1 += dm; x0 += sx;
HERE }