我正在尝试创建一个程序,该程序将找到解决具有以下规则的难题的步骤:
- 给定 4x4 网格中的任何一组颜色,尝试匹配具有相同颜色数量的结束模式。
- 颜色不会交换,而是水平或垂直旋转,这样
{W,W,B,W}
可以旋转到
{W,W,W,B}
{B,W,W,W}
{W,B,W,W}
- 整个谜题不到 16 个步骤即可解决。
我已经想出了如何存储拼图本身的数据,但我正在努力寻找一个可以显示步骤的解决方案。由于深度限制为 16 步,我可以尝试暴力破解,但真的不知道如何建立模式。
这类似于解决魔方,我已经查看了以下资源:
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/how-to-programatically-solve-the-15-moving-numbers-puzzle
为了使这个问题尽可能清楚:a) 存储/打印步骤和 b) 找到所需步骤最少的解决方案的好方法是什么?