计算4个立方体的所有可能性



所以,我有4个立方体,每个面上都有颜色,颜色可以是橙色、蓝色、红色或绿色

我的目标是知道如何在一条线上定位和旋转立方体,这样线的每个面上都有相同的颜色

示例示例2

立方体之间以及线条左右的颜色与无关

我在python中尝试了一些东西,但我甚至找不到知道如何计算的方法

如果有人能帮我找到一个能显示立方体颜色并显示解决方案的程序,那就太好了。我主要使用Python,但如果程序是用另一种语言制作的,也可以

好吧,让我们先做一点数学运算。有四个立方体。每个立方体最多有24个唯一的方向:首先,面A有6个选择;其次,面B最多有四种选择。如果我们计算24^4,我们发现四个立方体的集合有331776个唯一的方向。由于数量太少,我们不妨计划尝试所有这些。如果这个数字更高,我们可能需要更聪明一点,但现在请耐心等待。

所以,我们将使用暴力。我们需要以这样一种方式来表示每个立方体,即,给定方向,我们可以获得正面、背面、顶部和底部的颜色。通过命名面来对这些立方体进行建模可能会有所帮助。我们可以将它们命名为方向#1,我们可以将其视为默认方向:

  1. 面A/0是立方体的顶部
  2. B/1面是立方体的前面
  3. 面C/2在立方体的右侧
  4. 面D/3是立方体的背面
  5. 面E/4是立方体的左侧
  6. F/5面是立方体的底部

现在,立方体的方向可以被认为是这些面的排列。我们可以尝试编写代码来计算第N个排列是什么,或者我们可以列出所有24个唯一的方向和每个方向的映射:

  1. [0,1,2,3,4,5]。。。身份映射,因为人脸A/1是默认的

  2. [0,2,3,4,1,5]。。。围绕正垂直轴顺时针旋转#1 90度

  3. [0,3,4,1,2,5]。。。将#1绕正垂直轴顺时针旋转180度

  4. [0,4,1,2,3,5]。。。围绕正垂直轴顺时针旋转#1 270度

  5. [1,5,2,0,4,3]。。。将#1绕正水平轴逆时针旋转90度

  6. [1,2,0,4,5,3]。。。围绕正垂直轴顺时针旋转#5 90度

  7. [1,0,4,5,2,3]。。。围绕正垂直轴顺时针旋转#5 180度

  8. [1,4,5,20,3]。。。围绕正垂直轴顺时针旋转#5 270度

  9. [2,1,5,3,0,4]

  10. [2,5,3,0,1,4]

  11. [2,3,0,1,5,4]

  12. [2,0,1,5,3,4]

  13. [3,0,2,5,4,1]

  14. [3,2,5,4,0,1]

  15. [3,5,4,0,2,1]

  16. [3,4,0,2,5,1]

  17. [4,1,0,3,5,2]

  18. [4,0,3,5,1,2]

  19. [4,3,5,1,0,2]

  20. [4,5,10,3,2]

  21. [5,3,2,14,0]

  22. [5,2,14,3,0]

  23. [5,1,4,3,2.0]

  24. [5,4,3,21,0]

现在,我们可以编写一个函数,给定一个方向和一个面,它会告诉我们颜色:

GetFaceColor(orientation, face)
1. return colors[permutations[orientation][face]]

这里,permutations是上面给出的排列阵列的阵列,而colors是其中六个立方体面的颜色被指定用于方位#1的阵列。

现在,我们所需要做的就是使用四个嵌套循环来检查所有24^4的可能性:

FindSolution()
1. for w = 1 to 24 do
2.    for x = 1 to 24 do
3.        for y = 1 to 24 do
4.           for z = 1 to 24 do
5.              if FacesMatch(w, x, y, z, 0)
and FacesMatch(w, x, y, z, 1)
and FacesMatch(w, x, y, z, 3)
and FacesMatch(w, x, y, z, 5)
then return (w, x, y, z)
6. return null
FacesMatch(or1, or2, or3, or4, face)
1. color1 = cube1.GetFaceColor(or1, face)
2. color2 = cube2.GetFaceColor(or2, face)
3. color3 = cube3.GetFaceColor(or3, face)
4. color4 = cube4.GetFaceColor(or4, face)
5. return color1 = color2 and color2 = color3 and color3 = color4

最新更新