2
votes

Can anybody explain me how to calculate manhattan distance in 8 puzzle problem on this example http://ai.ia.agh.edu.pl/wiki/pl:prolog:pllib:sliding_puzzle ?

How it's calculate this:

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).

in this code?

1
I can't understand, what's the meaning of these a-z predicates? All code on your link looks awful, with lots of asserts/retracts and tons of repetitive code (generated with some other language?).Sergii Dymchenko

1 Answers

3
votes

a,b,c,...,i are the fixed cells names. The table is hand-coded to speedup the number of steps required to reach the goal - for instance, take d(8,0)., this only make sense because of goal(1/2/3/8/0/4/7/6/5)., that is, when cell d holds 8, 0 steps are required...