有关Prolog列表的任何其他信息?

时间:2015-02-27 08:47:25

标签: prolog

我需要有关列表如何在Prolog中工作的更多信息。 根据我发现的情况,Prolog中的列表似乎可以分为两部分:[Head|Tail],其中Head用于列表的第1项,Tail采用在列表中剩余的项目中。任何人都可以请更详细地向我解释这段代码的工作原理:

up_and_down([A, B, C|Rest]) :- 
   A < B,
   up_and_down([B, C|Rest]).
up_and_down([A, B, C|Rest]) :-
   A < B,
   B > C,
   goes_down([C|Rest]).

goes_down([]).
goes_down([X]).
goes_down([A, B|Rest]]) :-
   A > B,
   goes_down([B | Rest]).

这是来自Prolog check if the list is like 1,2,3,4,2,1

的代码

我想将此作为制作prolog程序的基础,以确定列表是否有弹性,这应该是这样的:

is_it_bouncy([1,2,3]).
false.
is_it_bouncy([3,2,1]).
false.
is_it_bouncy([1,3,2]).
True.

非常感谢解释:D
编辑:差不多完成但不确定我的if if语句。它应该像如果没有提升和下降那么有弹性
bouncy([X|[Y|Zs]]):- not ascending([Y|Zs]), descending ([Y|Zs]); bouncy([Y|Zs]).

1 个答案:

答案 0 :(得分:0)

[A,B,C | D]与写[A | [B | C | D]]是一样的,你可以选择列表中的第一个元素。只要你没有尝试获得比列表包含的元素更多的元素,它就可以使用许多元素。 Si up_and_down取列表的前三个元素并检查它们是否上升(A C)。 Goes_down只是检查一下,给定列表A和B的前两个元素,A优于B。