<p>我想生成几个3x3难题(<a href="https://datawookie.netlify.app/blog/2019/04/sliding-puzzle-solvable/" rel="nofollow noreferrer">https://datawookie.netlify.app/blog/2019/04/sliding-puzzle-solvable/</a>),其中难度定义为达到解决方案所需的最小动作。例如,在一个谜题[1,2,3,4,5,6,7,0,8]中,最小必要移动是1,因为我们可以通过向上移动8来获得解</p>
<p>上面的站点有一个python代码来确定可解性,我对它进行了一点修改,这样它就可以提供反转的数量:</p>
<pre><code>def solvable(tiles):
count = 0
for i in range(8):
for j in range(i+1, 9):
if tiles[j] and tiles[i] and tiles[i] > tiles[j]:
count += 1
return [count, count % 2 == 0]
</code></pre>
<p>但反转的次数并不是必要的最小移动次数。我如何修改代码,使其也返回最小的必要移动?还有,有没有办法用相同的最小动作自动生成谜题</p>