Prolog:排序元组列表

时间:2016-05-06 20:05:07

标签: list prolog maze

我在排序由元组组成的列表时遇到问题,想象一个带有x行的迷宫,我以元组的形式获得初始位置:(顶行,起始列)并获得最终位置(结束行,最后一列)仍然得到一个由元素组成的列表,这些元素是形式的元组:(方向,行,列),方向可以是,向上,列表由可能的运动组成。并且我的谓词必须返回一个列表,该列表包含接收但根据两个条件排序的相同元素: 距离终点位置1个订单 2如果到终点位置的距离等于我得到的列表中的2个或更多元素,我必须根据到起始位置的最大距离来命令具有相同距离的那些,即距离末端越远位置首先有元素。 注意:我得到的可能移动的最大列表可能有4个元素

这是我到目前为止所尝试的内容:

distance ((L1, C1), (L2, C2), Dist): - Dist is abs (L1-L2) + abs (C1-C2)

ordena_poss (Poss, Poss_ord, Inicial_position, Final_position): -
length (Poss, Lenght_of_Poss)
((Length_of_Poss = 0, size = 1) -> Poss_ord = Poss ; Poss_ord = Poss).

%如果Poss的长度为0或1,则Poss_ord = Poss(评论)

Poss - 是您可能采取行动的清单 例如[(c, 4, 4), (d, 5, 5)]

Inicial_position - 是迷宫的出发地。例如,(1, 6) Final_position - 是迷宫的到达地点。例如(5, 6)

最后的结果应该是一个Poss_ord列表,其中包含相同的Poss元素,但是在远处排序。

在我打电话的这个例子中:

? - Ordena_poss ([(c, 4, 4), (d, 5, 5)], Poss_ord (1, 6), (5, 6)).

应该给出结果:

Poss_ord = [(d, 5, 5), (c, 4, 4)]

当我得到一个空的或只有一个元素列表时,代码现在已经可以使用了。

如果有人知道如何解决这个问题,我感谢你。

0 个答案:

没有答案