小编liu*_*ang的帖子

试图解决Prolog中的跳钉拼图

九洞有8个钉子.开始时,左边的四个红色钉子和右边的四个蓝色钉子,以及它们之间的一个空洞.谜题是将所有红色向右移动,将蓝色钉向左移动(在另一个相反方向).这些是合法的举措:

  1. 钉子可能只向前移动(红色可能向右移动而蓝色向左移动).
  2. 栓钉可向前移动一步到打开位置.
  3. 如果超出它的位置是打开的,那么一个挂钩可能会跳过一个相反颜色的挂钩.

这是我写的,但它不起作用

% Form of board, b for blue, r for red, o for empty.
% [ [r,r,r,r], [o], [b,b,b,b] ]

% jumps 
linjmp([x, x, o | T], [o, o, x | T]).
linjmp([o, x, x | T], [x, o, o | T]).
linjmp([H|T1], [H|T2]) :- linjmp(T1,T2).


% Series of legal boards.
series(From, To, [From, To]) :- jump(From, To).
series(From, To, [From, By | Rest])
        :- jump(From, By), 
           series(By, To, [By | Rest]).

% Print a series …
Run Code Online (Sandbox Code Playgroud)

prolog eight-peg-puzzle

0
推荐指数
1
解决办法
1148
查看次数

标签 统计

eight-peg-puzzle ×1

prolog ×1