【发布时间】:2017-04-25 03:11:31
【问题描述】:
为了好玩,我一直在尝试使用 Warnsdorf 规则在 gprolog 中编写 Knight's Tour (https://en.wikipedia.org/wiki/Knight%27s_tour) 求解器。
我发现另一个 SO 帖子询问在 B-prolog 中提供解决方案的效率: knight's tour efficient solution.
我的问题出现在以下部分:
:- table warnsdorff(+,+,+,+,+,-,-,min).
warnsdorff(R, C, X, Y, Visits, NewX, NewY, Score) :-
possible_knight_moves(R, C, X, Y, Visits, NewX, NewY),
possible_moves_count(R, C, NewX, NewY, [(NewX, NewY) | Visits], Score).
B-prolog 具有表格谓词,而 gprolog 没有。我在尝试将表格部分转换为 gprolog 时遇到了很大的困难。在实践中,该函数应该返回从当前位置开始的移动,该移动会导致从新位置移动最少次(随机选择平局)。
任何帮助将不胜感激。干杯!
【问题讨论】:
-
向 Google 博士询问“骑士之旅序幕”。有很多解决方案。
-
“为了好玩”类似的问题开始蜂拥而至,让我觉得这是一个任务(见stackoverflow.com/questions/43622353/…和stackoverflow.com/questions/43628413/…)
标签: prolog predicate declarative knights-tour