繁体   English   中英

解决4x4拼图网格

[英]Solving a 4x4 Puzzle Grid

我正在尝试创建一个程序,该程序将使用以下规则找到解决难题的步骤:

  • 给定4x4网格中的任何颜色,请尝试匹配具有相同颜色数量的结束图案。
  • 颜色不会交换,而是水平或垂直旋转,这样

{W,W,B,W}

可以旋转到

{W,W,W,B}

{B,W,W,W}

{W,B,W,W}

  • 整个难题可以用不到16个步骤解决。

我已经想出了如何存储谜题本身的数据,但是我正在努力寻找一种可以显示步骤的解决方案。 由于深度限制为16个步骤,因此我可以尝试强行使用此方法,但实际上并不确定如何建立模式。

这类似于求解Rubik的多维数据集,并且我已经研究了以下资源:

  • stackoverflow.com/questions/34656587/solving-rubiks-cubes-for-Dummies/34656726#34656726

  • stackoverflow.com/questions/5563671/solving-rubiks-cube-programmatically

  • amzi.com/articles/rubik.htm

  • chessandpoker.com/rubiks-cube-solution.html

和15个数字问题

  • stackoverflow.com/questions/3621623/如何以编程方式解决15个移动数字难题

为了使这个问题尽可能清楚:a)存储/打印步骤,以及b)找到最少步骤的解决方案是什么好方法?

我想我无法解释没有图片的树。

假设您有以下开始模式:

[W, W, W, B]
[W, W, W, B]
[B, W, W, W]
[W, W, W, B]

这将是树的顶部节点。 0级。

因此,现在,我们进行所有可能的水平和垂直旋转。 首先向右水平。

[B, W, W, W]
[W, W, W, B]
[B, W, W, W]
[W, W, W, B]

[W, W, W, B]
[B, W, W, W]
[B, W, W, W]
[W, W, W, B]

[W, W, W, B]
[W, W, W, B]
[W, B, W, W]
[W, W, W, B]

[W, W, W, B]
[W, W, W, B]
[B, W, W, W]
[B, W, W, W]

水平向左。

[W, W, B, W]
[W, W, W, B]
[B, W, W, W]
[W, W, W, B]

[W, W, W, B]
[W, W, B, W]
[B, W, W, W]
[W, W, W, B]

[W, W, W, B]
[W, W, W, B]
[W, W, W, B]
[W, W, W, B]

[W, W, W, B]
[W, W, W, B]
[B, W, W, W]
[W, W, B, W]

垂直向上

[W, W, W, B]
[B, W, W, B]
[W, W, W, W]
[W, W, W, B]

[W, W, W, B]
[W, W, W, W]
[B, W, W, B]
[W, W, W, B]

垂直向下

[W, W, W, B]
[W, W, W, B]
[W, W, W, W]
[B, W, W, B]

[W, W, W, B]
[W, W, W, B]
[B, W, W, B]
[W, W, W, W]

由于第二列和第三列均为W,因此我们只有2种模式用于垂直向上和垂直向下。

级别1共有12种模式。

我们非常有条理地移动了。 我们的举动没有随机性。 水平向右,水平向左,垂直向上和垂直向下。

现在,以级别1的12个模式中的每个模式并生成16个模式。 您不必保存与级别0和级别1的模式匹配的模式。

生成和保存的模式构成级别2。

继续生成每个级别,直到达到16级或找到解决方案为止。 因为您要从树级别删除重复项,所以您不会在级别16上达到理论最大值16到第16个幂节点。

如果有多个解决方案且移动次数最少,请完成该级别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM