2

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?

repeat
  • 18,496
  • 4
  • 54
  • 166
Chris
  • 652
  • 1
  • 7
  • 22
  • 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 May 02 '14 at 23:50

1 Answers1

3

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

CapelliC
  • 59,646
  • 5
  • 47
  • 90
  • 1
    I think it means 'unassigned' cell, will never 'fire' under normal execution, but could act as 'passport' to a general - but inefficient - solution schema, simply stating a general match condition for moving marker... – CapelliC May 03 '14 at 09:24
  • 1
    anyway, seems really a lot of (useless) code, the task can be solved easily as exposed, for instance, in [this answer](http://stackoverflow.com/a/14769596/874024) – CapelliC May 03 '14 at 09:27