Math 曼哈顿距离8字谜

Math 曼哈顿距离8字谜,math,prolog,sliding-tile-puzzle,Math,Prolog,Sliding Tile Puzzle,在这个例子中,谁能解释一下如何计算8个谜题中的曼哈顿距离 它是如何计算的: a(0,0)。a(1,0)。a(2,1)。a(3,2)。a(4,3)。a(5,4)。a(6,3)。a(7,2)。 a(8,1)。b(0,0)。b(1,1)。b(2,0)。b(3,1)。b(4,2)。b(5,3)。b(6,2)。 b(7,3)。b(8,2)。c(0,0)。c(1,2)。c(2,1)。c(3,0)。c(4,1)。c(5,2)。 c(6,3)。c(7,4)。c(8,3)。d(0,0)。d(1,1)。d(2,2)

在这个例子中,谁能解释一下如何计算8个谜题中的曼哈顿距离

它是如何计算的:

a(0,0)。a(1,0)。a(2,1)。a(3,2)。a(4,3)。a(5,4)。a(6,3)。a(7,2)。 a(8,1)。b(0,0)。b(1,1)。b(2,0)。b(3,1)。b(4,2)。b(5,3)。b(6,2)。 b(7,3)。b(8,2)。c(0,0)。c(1,2)。c(2,1)。c(3,0)。c(4,1)。c(5,2)。 c(6,3)。c(7,4)。c(8,3)。d(0,0)。d(1,1)。d(2,2)。d(3,3)。d(4,2)。 d(5,3)。d(6,2)。d(7,2)。d(8,0)。e(0,0)。e(1,2)。e(2,1)。e(3,2)。 e(4,1)。e(5,2)。e(6,1)。e(7,2)。e(8,1)。f(0,0)。f(1,3)。f(2,2)。 f(3,1)。f(4,0)。f(5,1)。f(6,2)。f(7,3)。f(8,2)。g(0,0)。g(1,2)。 g(2,3)。g(3,4)。g(4,3)。g(5,2)。g(6,2)。g(7,0)。g(8,1)。h(0,0)。 h(1,3)。h(2,3)。h(3,3)。h(4,2)。h(5,1)。h(6,0)。h(7,1)。h(8,2)。
i(0,0)。i(1,4)。i(2,3)。i(3,2)。i(4,1)。i(5,0)。i(6,1)。i(7,2)。 i(8,3)


在此代码中?

a、b、c、…、i是固定的单元格名称。该表是手动编码的,以加快达到目标所需的步骤数-例如,采用
d(8,0)。
,这仅是因为
目标(1/2/3/8/0/4/7/6/5)。
,也就是说,当单元格
d
保持
8
时,需要0个步骤…

我不明白,这些
a
-
z
谓词的含义是什么?链接上的所有代码看起来都很糟糕,有大量的断言/收回和大量重复代码(用其他语言生成?)。我认为这意味着“未分配”单元格,在正常执行情况下永远不会“激发”,但可以作为通用但低效的解决方案模式的“通行证”,简单地说明移动标记的一般匹配条件……无论如何,似乎真的有很多(无用的)代码,任务可以很容易地解决,例如,在