我偶然发现了一个我想以编程方式解决的奇怪(而且非常讨厌的游戏)。它提醒了一点Rubik的立方体,但是二维。我正在努力解决这个问题......
有一个9x9的正方形,在内部正方形中放置了一些圆圈。例如,一个得到如下图片:
A B C D E F G H I
-------------------------------------
9 | | | O | | | O | | | | J
-------------------------------------
8 | | | O | | O | | O | | | K
-------------------------------------
7 | | | | O | | | O | O | | L
-------------------------------------
6 | | | O | | | | O | | | M
-------------------------------------
5 | | | O | | | | | | | N
-------------------------------------
4 | | | | O | | O | O | | | O
-------------------------------------
3 | | | | | O | | O | | | P
-------------------------------------
2 | | | | O | | | | | | Q
-------------------------------------
1 | | | O | | | | | | | R
-------------------------------------
0 Z Y X W V U T S
可以使用方形周围的数字和字母将整个“行”或“列”移动到左/右或上/下。将游戏区域向右移动的圆圈将重新出现在左侧,反之亦然,相同的帐户为顶部/底部。
目标是将圆圈重新排列为具有最大移动量的给定模式。例如,应该重新排列上图中的圆圈,以便在最多17次移动中反映下面的图片:
A B C D E F G H I
-------------------------------------
9 | | | | | | | | | | J
-------------------------------------
8 | | | O | O | O | O | O | | | K
-------------------------------------
7 | | | O | | | | O | | | L
-------------------------------------
6 | | | O | | | | O | | | M
-------------------------------------
5 | | | O | | | | O | | | N
-------------------------------------
4 | | | O | | | | O | | | O
-------------------------------------
3 | | | O | O | O | O | O | | | P
-------------------------------------
2 | | | | | | | | | | Q
-------------------------------------
1 | | | | | | | | | | R
-------------------------------------
0 Z Y X W V U T S
我想将圆圈的起点和终点位置提供给可提供最短路径的程序。我正在努力寻找一种方法,不仅可以尝试所有可能的移动,直到达到给定的最大移动次数。
此外,修改用于解决魔方的方法似乎并不那么容易......
嗯,我认为这是一个非常有趣的问题,也许这里有人有一个很有启发性的想法。
更新: 在第一次尝试之后,尝试所有可能的动作并不真实。排列太多了。我认为这可能真的难以解决......如果可能的话。