prolog中的列表?

prolog中的列表?,prolog,Prolog,我知道如何在prolog中处理列表,但我在处理列表时遇到问题,我正在为考试而学习,这是练习题之一。谁能帮我一下吗。到目前为止,我所做的一切尝试都彻底失败了 编写一个名为max2D的谓词,该谓词将值列表作为参数,并返回列表中所有值的最大值 示例输出:57 ?- max2D([[1,-7,3],[2,10],[19,3],[12]],M). M = 19 . 让我们分两步来做。首先,让我们获取列表的最大值: maxlist([X,Y|Z], Max) :- X > Y ->

我知道如何在prolog中处理列表,但我在处理列表时遇到问题,我正在为考试而学习,这是练习题之一。谁能帮我一下吗。到目前为止,我所做的一切尝试都彻底失败了

编写一个名为max2D的谓词,该谓词将值列表作为参数,并返回列表中所有值的最大值

示例输出:57

?- max2D([[1,-7,3],[2,10],[19,3],[12]],M). 
M = 19 .

让我们分两步来做。首先,让我们获取列表的最大值:

maxlist([X,Y|Z], Max) :- 
    X > Y -> maxlist([X|Z], Max)
           ; maxlist([Y|Z], Max).
maxlist([X], X).
看起来不错:

?- maxlist([1,5,7,3,5], Max).
Max = 7.    
让我们使用
maplist/3
将其应用于二维列表。每个最大值的最大值为总最大值:

max2D(List, Max) :- 
    maplist(maxlist, List, EachMax),
    max_list(EachMax, Max).
这似乎有效:

?- max2D([[1,-7,3],[2,10],[19,3],[12]], X).
X = 19 ;
false.

我尝试了许多变化,但似乎没有任何效果。我尝试使用内置函数'member',但我似乎没有成功。当你说“列表中所有值的最大值”时,不清楚你是想要一个值,所有列表中所有值的最大值,还是想要一个值列表,每个列表的最大值。这是包含您尝试的代码以及代码应该做什么的另一个原因。下面是一个示例输出:57?-max2D([[1,-7,3],[2,10],[19,3],[12]],M)。M=19。是的,我只想要一个值,它是整个列表中的最大值。好的。我要试试看。你应该用你的代码编辑这个问题,这样未来的读者就不必阅读所有的评论(无论如何,这些评论也不支持格式化代码)。非常感谢你帮了我大忙,你不知道地图列表的存在,这会让我的生活更轻松。:)@用户2303093没问题,感谢您接受我的反馈。:)祝Prolog和你的考试好运。