Java 是否可以检查15个谜题是否可以用不同的目标状态解决?

Java 是否可以检查15个谜题是否可以用不同的目标状态解决?,java,sliding-tile-puzzle,Java,Sliding Tile Puzzle,所以我有一个随机的15个拼图,或者任意宽度为偶数的N个拼图,还有一个随机的目标状态。也就是说,空白瓷砖和其他瓷砖也是随机放置的。 我可以用标准的目标状态检查15个拼图是否可以解决,即排列有序,右下角为空白,但是将目标状态随机化似乎比标准的8个拼图更棘手 例如: Start State 8 4 1 6 11 2 3 10 15 12 0 9 14 5 7 13 Goal State: 11 4 1 0 8 2 3

所以我有一个随机的15个拼图,或者任意宽度为偶数的N个拼图,还有一个随机的目标状态。也就是说,空白瓷砖和其他瓷砖也是随机放置的。 我可以用标准的目标状态检查15个拼图是否可以解决,即排列有序,右下角为空白,但是将目标状态随机化似乎比标准的8个拼图更棘手

例如:

Start State
8    4    1   6
11   2    3   10
15   12   0   9
14   5    7   13

Goal State:
11   4    1   0
8    2    3   10
5    15   6   9
12   9    7   13
标准15字谜可解性的规则为:

如果宽度是奇数,那么每个可解状态都有偶数个反转

如果宽度为偶数,则每个可解状态都有

<空白数为奇数行时的偶数个倒数 从底部开始计数

如果空白位于偶数行,则为奇数个倒数 从底部开始计数


我不认为不同的目标对可解性有任何影响


我能想到的最简单的解决方案是将自定义目标状态中的数字映射到标准目标状态中的数字。例如:对于第一行,您将11视为0,4->1,1->2,0->3等等。

是否可以提供一些代码?